type ScoreType int
const (
Food ScoreType = iota
Beverage
Water
Cheese
)
任何人都可以告訴它在結構中使用時的含義嗎?
我們可以直接使用
var Kij int = 0
const (
Food int = Kij
Beverage
Water
Cheese
)
以上是相同的還是不同的??
uj5u.com熱心網友回復:
是的!它們不一樣 。
- 第一個被編譯,但第二個引發錯誤:
(variable of type int) is not constant
。
您可以使用第一個示例而無需宣告新型別ScoreType
。但這是一種最佳實踐,可以提高代碼的可讀性。
根據您的問題,您似乎對iota
[這很好] 沒有足夠的了解。我認為在這里解釋它不是一個好主意,因為互聯網上有很多很好的解釋:
https://yourbasic.org/golang/iota/ 和 https://yourbasic.org/golang/bitmask-flag-set-clear/
這兩個鏈接將幫助你掌握背后的想法iota
和它給你的力量。祝他們好運。
uj5u.com熱心網友回復:
第一個編譯,第二個是編譯時錯誤,所以它們不可能相同。您不能使用變數來初始化常量!
第一個將分配ScoreType(0)
給Food
, ScoreType(1)
toBeverage
等。 的值iota
在每一行上遞增。參考規范:Iota:
在常量宣告中,預先宣告的識別符號
iota
表示連續的無型別整數常量。它的值是該常量宣告中相應ConstSpec的索引,從零開始。
要測驗它:
fmt.Println(Food)
fmt.Println(Beverage)
fmt.Println(Water)
fmt.Println(Cheese)
哪些輸出(在Go Playground上嘗試):
0
1
2
3
在第二個示例中,如果您使用const Kij int = 0
而不是var
,它將編譯,但會分配0
給所有常量:Kij
不會在每一行上遞增。上面的列印陳述句將輸出(在Go Playground上嘗試):
0
0
0
0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/506949.html