Go語言const&iota的實現(xiàn)示例
part 1.
要明白 iota 首先需要知道:Go 的 const 語法提供了“隱式重復前一個非空表達式”的機制。
const ( A = 1 // 1 B // 1 C // 1 )
常量定義的后兩行沒有顯式給予初始賦值,Go 編譯器將為其隱式使用第一行的表達式。
part 2.
iota 是 Go 語言的一個預定義標識符,它表示的含義是 const 聲明塊中每個常量所處位置在塊中的偏移值,從0開始(也可理解為 const 語句塊中的行索引)。
// 一般寫法 const ( Sunday = 0 Monday = 1 Tuesday = 2 Wednesday = 3 Thursday = 4 Friday = 5 Saturday = 6 ) // iota 寫法 const ( Sunday = iota Monday Tuesday Wednesday Thursday Friday Saturday )
來看下面這個例子:
const ( A = iota - 1 // -1 由于這里是 const 聲明塊的第一行,iota 的值是該行在 const 塊中的偏移,因此 iota 的值為 0 B // 0 C // 1 D = iota // 3 由于該行為第四行,iota 的偏移值為 3 E // 4 )
略過 iota = 0,從 iota = 1 開始正式定義枚舉常量:
const ( _ = iota A // 1 B // 2 C // 3 )
位于同一行的 iota 即便出現(xiàn)多次,其值也是一樣的:
const ( _ = iota A, PI1 = iota, 3.14 / (2 * iota) // 1, 3.14 / (2 * 1) B, PI2 // 2, 3.14 / (2 * 2) C, PI3 // 3, 3.14 / (2 * 3) )
略過某一行:
const ( _ = iota A // 1 B // 2 C // 3 _ E // 5 )
使用有類型枚舉常量保證類型安全:
如果要嚴格考慮類型安全,可以定義有類型枚舉常量,比如上述代碼的 Sunday~Saturday:
type Weekday int const ( Sunday Weekday = iota Monday Tuesday Wednesday Thursday Friday Saturday )
這樣,后續(xù)要使用 Sunday~Saturday 這些有類型枚舉常量,必須匹配 Weekday 類型的變量。
到此這篇關于Go語言const&iota的實現(xiàn)的文章就介紹到這了,更多相關Go語言const iota內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Golang中errors包如何返回自定義error類型
這篇文章主要為大家詳細介紹了Golang中errors包如何返回自定義error類型,文中的示例代碼簡潔易懂,有需要的小伙伴可以跟隨小編一起學習一下2023-09-09
Go語言net包RPC遠程調用三種方式http與json-rpc及tcp
這篇文章主要為大家介紹了Go語言net包RPC遠程調用三種方式分別使用http與json-rpc及tcp的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
Go?slice切片make生成append追加copy復制示例
這篇文章主要為大家介紹了Go使用make生成切片、使用append追加切片元素、使用copy復制切片使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
Golang安裝和使用protocol-buffer流程介紹
這篇文章主要介紹了Golang安裝和使用protocol-buffer過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-09-09
mac下golang安裝了windows編譯環(huán)境后編譯變慢
這篇文章主要介紹了mac下golang安裝了windows編譯環(huán)境后編譯變慢的處理方法,非常的簡單,有相同問題的小伙伴可以參考下。2015-04-04

