【发布时间】:2021-09-14 12:21:58
【问题描述】:
在 Go 中,假设我有一个 UTF-8 的 []byte,我想将其作为字符串返回。
func example() *string {
byteArray := someFunction()
text := string(byteArray)
return &text
}
我想去掉 text 变量,但 Go 不支持以下内容:
func example() *string {
byteArray := someFunction()
return &string(byteArray)
}
第二个示例语法正确吗?如果是这样,为什么 Go 不支持它?
【问题讨论】:
-
有什么具体原因,为什么要在这种情况下处理指针?为什么不在函数中返回字符串值。如果你真的需要指针而不是值,然后使用指针语法
-
消除指针是一个不错的建议。如果函数也返回错误,我认为指针对错误路径很有帮助,例如,
return nil, err而不是return "", err。 -
这只是语言作者在设计时的决定。 Note that you can write
return &T{1, "two"},那为什么不return &3?但你不能那样做。为什么不?因为上帝,我的意思是肯,是这么说的。 -
@torek 我觉得不允许 &
是对的,但不支持 & 是出乎意料的。你又举了一个我没想到的例子,很有趣!
标签: go