Go 语句“type subscriber struct{...}”中的 type 做了什么?

我是 Go 语言的新手,以前也从未使用过结构。我对结构的理解是,它们在相关时将不同类型的数据组合在一起。就像这个例子显示了来自“Head First Go”一书的内容:


`type subscriber struct{  


    name string  

    rate float64  

    active bool  

}`

我的问题是该结构代码与该结构代码(我编写的)相比如何:


var subscriber struct{

    

        name string  

        rate float64  

        active bool  

}

对我来说,第一个带有关键字 type 的结构似乎是可以重复使用的(即,实例化任意多次)。那么这将使它成为一个定义吗?


然后是第二个订阅者结构 - 带有关键字 var- 不像定义那样。它只是使用 var name 订阅者动态创建的单个结构吗?这意味着您不能使用此代码创建更多的订阅者结构。


我在看 C 中的结构(这可能是一个错误),看起来结构更像是第一个带有关键字类型的示例?那就是结构代码始终是一个定义,可让您根据需要创建任意数量的特定结构。这是准确的吗?抱歉,我知道这在技术上更像是 2 个问题。


杨__羊羊
浏览 107回答 1
1回答

幕布斯7119047

编码:struct {         name string           rate float64           active bool  }是一个结构类型文字。type关键字引入了类型声明。问题中的语句使用指定的结构类型文字type声明命名类型。subscribervar关键字引入了变量声明。问题中的var语句声明了subscriber具有由结构类型文字指定的匿名类型的变量。对我来说,第一个带有关键字 type 的结构似乎是可以重复使用的(即,实例化任意多次)。关键是声明的类型有一个名字,这个名字可以用来指代这个类型。然后是第二个订阅者结构 - 带有关键字 var- 不像定义那样。它只是使用 var name 订阅者动态创建的单个结构吗?从定义变量的意义上说,它是一个定义subscriber。该变量subscriber具有结构类型文字指定的匿名类型。这意味着您不能使用此代码创建更多的订阅者结构。应用程序可以使用简短的变量声明来声明另一个具有相同匿名类型的变量: subscriber2 := subscriber应用程序可以声明一个具有相同类型文字的变量:var subscriber3 struct{              name string           rate float64           active bool  }变量subscriber,subscriber2和subscriber3都具有相同的匿名类型。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go