兄弟連go教程(2)型別-常量
常量值必須是編譯期可確定的數字、字串、布林值。
不⽀支援 1UL、2LL 這樣的型別字尾。
在常量組中,如不提供型別和初始化值,那麼視作與上⼀一常量相同。
常量值還可以是 len、cap、unsafe.Sizeof 等編譯期可確定結果的函式返回值。
如果常量型別⾜足以儲存初始化值,那麼不會引發溢位錯誤。
列舉
關鍵字 iota 定義常量組中從 0 開始按⾏行計數的⾃自增列舉值。
在同⼀一常量組中,可以提供多個 iota,它們各⾃自增⻓長。
可通過⾃自定義型別來實現列舉型別限制。
)
func main() {
const x = "xxx" // 未使⽤用區域性常量不會引發編譯錯誤。
}
const x, y int = 1, 2 // 多常量初始化
const s = "Hello, World!" // 型別推斷
const ( // 常量組
a, b = 10, 100
c bool = false
Go 學習筆記, 第 4 版
10
)
func main() {
const x = "xxx" // 未使⽤用區域性常量不會引發編譯錯誤。
}
不⽀支援 1UL、2LL 這樣的型別字尾。
在常量組中,如不提供型別和初始化值,那麼視作與上⼀一常量相同。
const (
s = "abc"
x // x = "abc"
)
常量值還可以是 len、cap、unsafe.Sizeof 等編譯期可確定結果的函式返回值。
const (
a = "abc"
b = len(a)
c = unsafe.Sizeof(b)
)
如果常量型別⾜足以儲存初始化值,那麼不會引發溢位錯誤。
const (
a byte = 100 // int to byte
b int = 1e20 // float64 to int, overflows
)
列舉
關鍵字 iota 定義常量組中從 0 開始按⾏行計數的⾃自增列舉值。
const ( Sunday = iota // 0 Monday // 1,通常省略後續⾏行表示式。 Tuesday // 2 Wednesday // 3 Thursday // 4 Friday // 5 Saturday // 6 ) const ( _ = iota // iota = 0 KB int64 = 1 << (10 * iota) // iota = 1 MB // 與 KB 表示式相同,但 iota = 2 GB TB )
在同⼀一常量組中,可以提供多個 iota,它們各⾃自增⻓長。
const (
A, B = iota, iota << 10 // 0, 0 << 10
C, D // 1, 1 << 10
)
如果 iota ⾃自增被打斷,須顯式恢復。
const (
A = iota // 0
B // 1
C = "c" // c
D // c,與上⼀一⾏行相同。
E = iota // 4,顯式恢復。注意計數包含了 C、D 兩⾏行。
F // 5
)
可通過⾃自定義型別來實現列舉型別限制。
type Color int
const (
Black Color = iota
Red
Blue
)
func test(c Color) {}
func main() {
c := Black
test(c)
x := 1
test(x) // Error: cannot use x (type int) as type Color in function argument
test(1) // 常量會被編譯器⾃自動轉換。
}
尹成老師
QQ77025077
微信18510341407
所有視訊在尹成學院
www.yinchengxueyuan.com
尹成百度雲請聯絡QQ475318423
相關文章
- 兄弟連go教程(3)基本型別Go型別
- 兄弟連go教程(1)型別-變數Go型別變數
- 兄弟連go教程(7)自定義型別Go型別
- 兄弟連go教程(4)型別-引用及轉換Go型別
- 兄弟連go教程(5)字串Go字串
- 兄弟連go教程(6)指標Go指標
- 兄弟連go教程(16)資料 - ArrayGo
- 兄弟連go教程(17)資料 - SliceGo
- 兄弟連go教程(18)資料 - MapGo
- 兄弟連go教程(19)資料 -StructGoStruct
- 兄弟連go教程(10)表示式 - 控制流Go
- 兄弟連go教程(12)函式 - 變參Go函式
- 兄弟連go教程(9)表示式-初始化Go
- 兄弟連go教程(13)函式 返回值Go函式
- 兄弟連go教程(14)函式 - 匿名函式Go函式
- 兄弟連go教程(15)函式 - 延遲呼叫Go函式
- 兄弟連go教程(19)資料 - 匿名欄位Go
- 兄弟連go教程(19)資料 - ⾯物件導向Go物件
- 兄弟連go教程(8)表示式--保留字;運算子Go
- 兄弟連go教程(11)函式 - 函式定義Go函式
- 兄弟連go教程(15)函式 - 錯誤處理Go函式
- Go 常量、init、陣列、型別轉換與斷言、RecoverGo陣列型別
- 從零開始學GO ---- (1) 變數、常量、基本資料型別Go變數資料型別
- Go語言學習(6) - 資料型別轉換和常量以及iotaGo資料型別
- Go 基礎教程--4-常量與運算子Go
- go泛型教程Go泛型
- Go之旅-常量Go
- Go 基礎教程--3-型別與變數Go型別變數
- 面試官:兄弟,說說基本型別和包裝型別的區別吧面試型別
- Go 基本型別Go型別
- go 語言常量Go
- 兄弟連golang神技(1)-關於 Go 語言的介紹Golang
- 多用型別常量替代#define預處理指令型別
- C語言-變數常量資料型別C語言變數資料型別
- TensorFlow學習(二):變數常量型別變數型別
- NumPy 超詳細教程(2):資料型別資料型別
- Solidity 教程系列2 - 地址型別介紹Solid型別
- Go 的引用型別Go型別