美文网首页
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