package main
import "fmt"
type TT struct {
a int
b float32
c string
}
func (t *TT) String() string {
return fmt.Sprintf("%+v", *t)
}
func main() {
tt := &TT{3, 4, "5"}
fmt.Printf(tt.String())
}
Run Code Online (Sandbox Code Playgroud)
代码可以很好地工作.但是,如果我String按照以下方式更改方法,则会导致死循环.不同之处在于*t被替换为t.为什么?
func (t *TT) String() string {
return fmt.Sprintf("%+v", t)
}
Run Code Online (Sandbox Code Playgroud)