func ( f Family ) String ( ) string { return "Father: " + f . Father + "\nMather: " + f . Mather + "\nBrother: " + f . Brother

输出:
Father: fa
Mather: ma
Brother: bro

或者使用引用的方式

type Family struct {
	Father  string
	Mather  string
	Brother string
func main() {
	f := &Family{"fa", "ma", "bro"}
	fmt.Println(f)
func (f *Family) String() string {
	return "Father: " + f.Father + "\nMather: " + f.Mather + "\nBrother: " + f.Brother

如果类型定义了 String() 方法,它会被用在 fmt.Printf() 中生成默认的输出:等同于使用格式化描述符 %v 产生的输出。还有 fmt.Print() 和 fmt.Println() 也会自动使用 String() 方法。

不要在 String() 方法里面调用涉及 String() 方法的方法,它会导致意料之外的错误,比如无限递归调用。
类似于这样:

func (t TT) String() string {
    return fmt.Sprintf("%v", t)

也很好理解,因为 fmt.Sprintf 又会去再次调用 String(),从而形成无限递归。

对于结构体,有时候我们需要打印它的信息,但是打印出来是这样的:type Family struct { Father string Mather string Brother string}func main() { f := Family{"fa", "ma", "bro"} fmt.Println(f)}输出:{fa ma bro}并不是很直观,golang允许你通过实现 String() 接口来自定义输出。type Family struct { Father
当定义了一个有很多方法类型时,十之八九你会使用 String() 方法来定制类型的字符串形式的输出,换句话说:一种可阅读性和打印性的输出。如果类型定义了 String() 方法,它会被用在 fmt.Printf() 中生成默认的输出:等同于使用格式化描述符 %v 产生的输出。还有 fmt.Print() 和 fmt.Println() 也会自动使用 String() 方法。 packa...
总结了golang中字常见类型之间的相互转换方式: go语言的类型转化都在strconv package里面,详情请参考: http://golang.org/pkg/strconv 1 字符串string和各种int类型之间的相互转换方式: string转成int: int, err := strconv.Atoi(string) string转成int64: int64, err := strconv.ParseInt(string, 10, 64) int转成stringstring := st
在日常编程中,使用fmt.Sprintf可以非常方便的拼接出字符串,但是你知道吗,人畜无害的fmt.Sprintf竟然是一个性能killer。 在日常的coding中,我们一般会使用以下几种方法去拼接字符串 // 1. + 运算符 str := str1+str2 // 2. fmt.Sprintf str := fmt.Sprintf("%s %s",str1,str2) // 3. strings.Builder builder := strings.Builder{} builder.Wirt.
android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="tru android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=“按钮的标题"