【问题标题】:What does type do in the Go statement "type subscriber struct{...}?"Go 语句“type subscriber struct{...}”中的 type 做了什么?
【发布时间】:2020-12-31 02:33:48
【问题描述】:

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

`type subscriber struct{  

    name string  
    rate float64  
    active bool  
}`

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

var subscriber struct{
    
        name string  
        rate float64  
        active bool  
}

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

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

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

【问题讨论】:

    标签: go struct types


    【解决方案1】:

    代码:

    struct {
            name string  
            rate float64  
            active bool  
    }
    

    struct 类型文字。

    type 关键字引入了type declaration。问题中的type 语句声明了具有指定结构类型文字的命名类型subscriber

    var 关键字引入了variable declaration。问题中的var 语句声明变量subscriber 具有由结构类型文字指定的匿名类型。

    对我来说,第一个带有关键字 type 的结构似乎是可以重复使用的(即,实例化任意多次)。

    关键是声明的类型有名字,名字可以用来引用类型。

    然后是第二个订阅者结构- 关键字 var- 不像 then 的定义。它只是使用 var name 订阅者动态创建的单个结构吗?

    这是一个定义,它定义了变量subscriber。变量subscriber 具有结构类型字面量指定的匿名类型。

    意味着您不能使用此代码创建更多订阅者结构。

    应用程序可以使用简短的变量声明来声明另一个具有相同匿名类型的变量:

     subscriber2 := subscriber
    

    应用程序可以声明一个具有相同类型文字的变量:

    var subscriber3 struct{
        
            name string  
            rate float64  
            active bool  
    }
    

    变量subscribersubscriber2subscriber3都具有相同的匿名类型。

    【讨论】:

      猜你喜欢
      • 2019-05-10
      • 2021-11-28
      • 2016-10-24
      • 1970-01-01
      • 2011-03-11
      • 2021-09-25
      • 2019-07-19
      • 1970-01-01
      • 2014-12-22
      相关资源
      最近更新 更多