作用
用于定制fmt.Println(x)、fmt.Printf("%v", x)、fmt.Print(x)时输出的内容。
示例
package main
import "fmt"
type Couple struct {
Husband string
Wife string
}
func (self Couple) String() string {
return "(husband:" + self.Husband + ", wife:" + self.Wife + ")"
}
func main() {
couple := Couple{"XuXian", "BaiSuzhen"}
fmt.Println(couple)
}
输出:(husband:XuXian, wife:BaiSuzhen)
注意
需要注意的是receiver的类型,如果为指针类型,则fmt.Println(指针)时可以调用String()方法,fmt.Println(值)不会调用String()方法。而如果receiver是值类型,则fmt.Println(值)和fmt.Println(指针)都会调用String()方法。原因是fmt.Println()函数其接收的参数是实现了String()方法的接口,接口不保存地址,因此当fmt.Println(值)时得不到地址也就无法调用String()方法。