有没有惯用的方法打印字符串指针内容或零?

时间:2016-12-21 15:42:08

标签: go

我有一个字符串指针,可能是也可能不是nil,如果内容存在,我想打印出字符串的内容,或者如果指针是nil则指示指针为nil。是否有一种聪明的方法可以做到不涉及if检查或临时变量(最好是单行)?

现在我正在使用这样的东西:

if p == nil {
    fmt.Print(p)
} else {
    fmt.Print(*p)
}

但是当在该值之前和/或之后有其他格式和其他变量打印时,这尤其笨拙和冗长。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

func main() {
    var hello SmartString = "hello"

    p := &hello
    p.Print()
    p = nil
    p.Print()

}

type SmartString string

func (p *SmartString) Print() {
    if p == nil {
        fmt.Println(p)
    } else {
        fmt.Println(*p)
    }
}

是否是个好主意取决于你。

您甚至可以使用String接口使其与fmt.Println

一起使用
func main() {
    var hello SmartString = "hello"

    p := &hello
    fmt.Println(p)
    p = nil
    fmt.Println(p)

}

type SmartString string

func (p *SmartString) String() string {
    if p == nil {
        return "<nil>"
    }
    return string(*p)
}