我是 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 个问题。
1 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
编码:
struct { name string rate float64 active bool }
是一个结构类型文字。
type
关键字引入了类型声明。问题中的语句使用指定的结构类型文字type
声明命名类型。subscriber
var
关键字引入了变量声明。问题中的var
语句声明了subscriber
具有由结构类型文字指定的匿名类型的变量。
对我来说,第一个带有关键字 type 的结构似乎是可以重复使用的(即,实例化任意多次)。
关键是声明的类型有一个名字,这个名字可以用来指代这个类型。
然后是第二个订阅者结构 - 带有关键字 var- 不像定义那样。它只是使用 var name 订阅者动态创建的单个结构吗?
从定义变量的意义上说,它是一个定义subscriber
。该变量subscriber
具有结构类型文字指定的匿名类型。
这意味着您不能使用此代码创建更多的订阅者结构。
应用程序可以使用简短的变量声明来声明另一个具有相同匿名类型的变量:
subscriber2 := subscriber
应用程序可以声明一个具有相同类型文字的变量:
var subscriber3 struct{ name string rate float64 active bool }
变量subscriber
,subscriber2
和subscriber3
都具有相同的匿名类型。
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报
0/150
提交
取消