golang中iota的用法小結
iota是Go語言的一個預定義標識符,它表示的是const聲明塊(包括單行聲明)中每個常量所處位置在塊中的偏移值(從零開始)。同時,每一行中的iota自身也是一個無類型常量,可以像無類型常量那樣自動參與不同類型的求值過程,而無須對其進行顯式類型轉換操作。
1.使用實例說明
// $GOROOT/src/sync/mutex.go (go 1.12.7) const ( mutexLocked = 1 << iota mutexWoken mutexStarving mutexWaiterShift = iota starvationThresholdNs = 1e6 )
iota在第一行出現,iota在第一行即位0,在第二行即位1,在第三行即位2,在第四行即位3…
mutexLocked = 1 << iota:這里是const聲明塊的第一行,iota的值是該行在const塊中的偏移量,因此iota的值為0,我們得到mutexLocked這個常量的值為1 << 0,即1。mutexWoken:這里是const聲明塊的第二行,由于沒有顯式的常量初始化表達式,根據const聲明塊的“隱式重復前一個非空表達式”機制,該行等價于mutexWoken = 1 <<iota。由于該行是const塊中的第二行,因此偏移量iota的值為1,我們得到mutexWoken這個常量的值為1<< 1,即2。mutexStarving:該常量同mutexWoken,該行等價于mutexStarving = 1 << iota,由于在該行的iota的值為2,因此我們得到mutexStarving這個常量的值為 1 << 2,即4。mutexWaiterShift = iota:這一行的常量初始化表達式與前三行不同,由于該行為第四行,iota的偏移值為3,因此mutexWaiterShift的值就為3。位于同一行的iota即便出現多次,其值也是一樣的
2.常用方式
const ( _ = iota Blue Black Red Yellow )
默認Blue=1,之后如果新加其他常量,不需要賦值,會自動累加
參考圖書《Go語言精進之路》,可以抽空翻翻,提高基礎知識,也會有新的收獲
到此這篇關于golang中iota的用法小結的文章就介紹到這了,更多相關golang iota用法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Go語言實現一個Http Server框架(二) Server的抽象
上一篇文章對http庫的基本使用做了說明,這篇文章主要介紹了如何實現一個簡單地httpServer,文中代碼示例非常詳細,感興趣的朋友可以參考下2023-04-04