在 Go 中声明具有匿名类型的变量时,我发现var vvsv:=语法的工作方式不同。想象一下,我们正在声明一个空的匿名结构类型实例并将其分配给一个变量。这有效:func main() {
var v struct {}
_ = v但这不会:func main() {
t := struct{}
_ = t
}编译它会出现以下错误(https://play.golang.org/p/MgbttbBVmYE):prog.go:8:7: type struct {} is not an expression为什么会这样?
1 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
var v struct{}给出v类型struct{}但没有显式设置值,因此它得到零值{}。
t := struct{}不是一个完整的表达式。您需要t := struct{}{}创建twith typestruct {}并赋予它 value {}。
也就是说,struct{}是一个类型,但是创建twith:=需要一个值,而不仅仅是右边的一个类型。 struct{}{}是如何编写匿名空结构的字面形式。
- 1 回答
- 0 关注
- 183 浏览
添加回答
举报
0/150
提交
取消
