gpt4 book ai didi

go - 匿名类型声明通过 "var"与 ":="的工作方式不同

转载 作者:IT王子 更新时间:2023-10-29 01:49:08 25 4
gpt4 key购买 nike

在 Go 中声明匿名类型的变量时,我发现 var vv:= 语法的工作方式不同。想象一下,我们正在声明一个空的匿名结构类型实例并将其分配给一个变量。

这个有效:

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

为什么会这样?

最佳答案

var v struct{} 给出 v 类型 struct{} 但没有显式设置值,因此它获得零值{}

t := struct{} 不是一个完整的表达式。您需要 t := struct{}{} 来创建类型为 struct {}t 并赋予它值 {

换句话说,struct{} 是一个类型,但是用 := 创建 t 需要一个值,而不仅仅是一个类型右侧。 struct{}{} 是您编写匿名空结构的文字形式的方式。

关于go - 匿名类型声明通过 "var"与 ":="的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54858555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com