在 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{}{}
创建t
with typestruct {}
并赋予它 value {}
。
也就是说,struct{}
是一个类型,但是创建t
with:=
需要一个值,而不仅仅是右边的一个类型。 struct{}{}
是如何编写匿名空结构的字面形式。
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消