簡體   English   中英

在 Go 語句“typesubscriber struct{…}”中 type 有什么作用?

[英]What does type do in the Go statement “type subscriber struct{…}?”

我是 Go 語言的新手,之前也從未使用過結構體。 我對結構的理解是,它們在相關時將不同類型的數據組合在一起。 就像這個例子顯示了來自“Head First Go”一書的內容:

`type subscriber struct{  

    name string  
    rate float64  
    active bool  
}`

我的問題是該結構體代碼與該結構體代碼(我編寫的)相比如何:

var subscriber struct{
    
        name string  
        rate float64  
        active bool  
}

對我來說,第一個結構體(帶有關鍵字類型)似乎是您可以重用的結構體(即根據需要實例化多次)。 那么這將使它成為一個定義?

然后是第二個訂閱者結構 - 帶有關鍵字 var- 不像定義那么。 它只是一個使用 var 名稱訂閱者動態創建的結構嗎? 這意味着您無法使用此代碼創建更多訂閱者結構。

我正在查看 C 中的結構(這可能是一個錯誤),看起來結構更像是第一個帶有關鍵字類型的示例? 那就是結構代碼始終是一個定義,允許您根據需要創建任意數量的特定結構。 這是准確的嗎? 抱歉,我知道這在技術上更像是 2 個問題。

編碼:

struct {
        name string  
        rate float64  
        active bool  
}

結構類型文字。

type關鍵字引入了類型聲明 問題中的type語句使用指定的結構類型文字聲明命名類型subscriber

var關鍵字引入了一個變量聲明 問題中的var語句聲明了具有由結構類型文字指定的匿名類型的變量subscriber

對我來說,第一個結構體(帶有關鍵字類型)似乎是您可以重用的結構體(即根據需要實例化多次)。

關鍵是一個聲明的類型有一個名字,這個名字可以用來指代這個類型。

然后是第二個訂閱者結構 - 帶有關鍵字 var- 不像定義那么。 它只是一個使用 var 名稱訂閱者動態創建的結構嗎?

這是一個定義,它定義了變量subscriber 變量subscriber具有由struct 類型文字指定的匿名類型。

這意味着您無法使用此代碼創建更多訂閱者結構。

應用程序可以使用短變量聲明來聲明另一個具有相同匿名類型的變量:

 subscriber2 := subscriber

應用程序可以聲明一個具有相同類型文字的變量:

var subscriber3 struct{
    
        name string  
        rate float64  
        active bool  
}

變量subscribersubscriber2subscriber3都具有相同的匿名類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM