为了账号安全,请及时绑定邮箱和手机立即绑定

匿名类型声明通过“var”与“:=”的工作方式不同

匿名类型声明通过“var”与“:=”的工作方式不同

Go
吃鸡游戏 2023-06-12 12:52:47
在 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{}{}是如何编写匿名空结构的字面形式。


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信