go print fmt

2020-03-03  本文已影响0人  cdz620

常用标志

测试例子:https://play.golang.org/p/kN6pBwc4WT_F

自定义 String方法

注意事项:

func (t T) String() string {
    return fmt.Sprintf("%d/%g/%q", t.a, t.b, t.c)
}
fmt.Printf("%v\n", t)
type MyString string
func (m MyString) String() string {
    return fmt.Sprintf("MyString=%s", m) // Error: will recur forever.   %s 导致的问题,%s需要字符串,会调用String方法
}

可通过如下解决循环调用:

type MyString string
func (m MyString) String() string {
    return fmt.Sprintf("MyString=%s", string(m)) // OK: note conversion.  类型转换后,启用的string.String()方法。前提条件是本质类型相同
}
上一篇下一篇

猜你喜欢

热点阅读