我正在學習圍棋,并遇到了類似的情況:
type Something struct {
someField String
}
然后將其初始化為:Something{}
我的理解是,我們需要使用其中的欄位來初始化 struct,但這是在編譯和作業,所以有人可以解釋一下為什么會這樣嗎?
uj5u.com熱心網友回復:
Go 沒有未定義的概念。每種資料型別都有一個零值。
- https://dave.cheney.net/2013/01/19/what-is-the-zero-value-and-why-is-it-useful
- https://go.dev/tour/basics/12
默認情況下,任何未顯式初始化的變數/欄位/屬性都使用其資料型別的零值進行初始化。
這是否是一件好事是有爭議的[1],但它是 Go Way?。
[1] 例如,如果我正在測量電壓,那么零伏的測量與根本沒有電壓測量是不同的。或者,如果我將調查回復制成表格,則沒有任何回復與“未知”/“不知道”/“其他”的回復不同。
uj5u.com熱心網友回復:
正如@icza 所說,元素/欄位是可選的。如果未提供,它們將具有適用于元素/欄位型別的零值。例如,在int“零值”中將是0.
非常感謝@icza 和@Sergio Tulentsev 的評論,這些評論基本上就是答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/454480.html
上一篇:將引數傳遞給函式引數不起作用
