如何在Go中表示可选字符串?
我希望对一个值建模,该值可以有两种可能的形式:不存在或字符串。
自然的方式来做到这一点是Maybe String
,或者Optional<String>
,或者string
option,等。然而,Go没有变异类型是这样的。
然后,我认为在Java,C等之后,替代方案将是可空性或nil
在Go中。但是,nil
不是string
Go类型的成员。
搜索后,我想到使用type *string
。这可能有效,但看起来很尴尬(例如,我无法以与获取结构文字的地址相同的方式获取字符串文字的地址)。
在Go中为这种值建模的惯用方式是什么?
回答:
您可以使用类似的方法sql.NullString
,但我个人会坚持使用*string
。至于尴尬,没错,这是事实sp
:= &"foo"。但是有一个解决方法:
func strPtr(s string) *string { return &s
}
呼叫strPtr("foo")
应内联,这样有效&"foo"
。
另一种可能性是使用new
:
sp := new(string)*sp = "foo"
以上是 如何在Go中表示可选字符串? 的全部内容, 来源链接: utcz.com/qa/411138.html