美文网首页
go print fmt

go print fmt

作者: cdz620 | 来源:发表于2020-03-03 00:24 被阅读0次

常用标志

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

  • %v: v代表value,
  • %+v: 标注字段信息
  • %#v: 用go的语法打印出来,最常用
  • 字符串类:%q: quoted string,双引号
  • 字符串类:%#q: 反引号,可以复制到代码中
  • %T: 类型
  • 其他:https://golang.org/pkg/fmt/

自定义 String方法

注意事项:

  • 如果要方法的receiver的问题,如果要*T与T都能调用String方法,receiver必须 T
func (t T) String() string {
    return fmt.Sprintf("%d/%g/%q", t.a, t.b, t.c)
}
fmt.Printf("%v\n", t)
  • 注意不要在String()内引起死循环调用
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()方法。前提条件是本质类型相同
}

相关文章

网友评论

      本文标题:go print fmt

      本文链接:https://www.haomeiwen.com/subject/sxmikhtx.html