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

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

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

Go
杨__羊羊 2022-06-27 16:55:54
我是 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,subscriber2subscriber3都具有相同的匿名类型。


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

添加回答

举报

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