欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang中iota的用法小結(jié)

 更新時(shí)間:2025年03月04日 10:17:03   作者:SLM的智慧  
iota是Go語言中的一個(gè)預(yù)定義標(biāo)識(shí)符,用于表示const聲明塊中每個(gè)常量的偏移值,本文主要介紹了golang中iota的用法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下

iota是Go語言的一個(gè)預(yù)定義標(biāo)識(shí)符,它表示的是const聲明塊(包括單行聲明)中每個(gè)常量所處位置在塊中的偏移值(從零開始)。同時(shí),每一行中的iota自身也是一個(gè)無類型常量,可以像無類型常量那樣自動(dòng)參與不同類型的求值過程,而無須對其進(jìn)行顯式類型轉(zhuǎn)換操作。

1.使用實(shí)例說明

// $GOROOT/src/sync/mutex.go (go 1.12.7)
const (
    mutexLocked = 1 << iota
    mutexWoken
    mutexStarving
    mutexWaiterShift = iota
    starvationThresholdNs = 1e6
)

iota在第一行出現(xiàn),iota在第一行即位0,在第二行即位1,在第三行即位2,在第四行即位3…

mutexLocked = 1 << iota:這里是const聲明塊的第一行,iota的值是該行在const塊中的偏移量,因此iota的值為0,我們得到mutexLocked這個(gè)常量的值為1 << 0,即1。mutexWoken:這里是const聲明塊的第二行,由于沒有顯式的常量初始化表達(dá)式,根據(jù)const聲明塊的“隱式重復(fù)前一個(gè)非空表達(dá)式”機(jī)制,該行等價(jià)于mutexWoken = 1 <<iota。由于該行是const塊中的第二行,因此偏移量iota的值為1,我們得到mutexWoken這個(gè)常量的值為1<< 1,即2。mutexStarving:該常量同mutexWoken,該行等價(jià)于mutexStarving = 1 << iota,由于在該行的iota的值為2,因此我們得到mutexStarving這個(gè)常量的值為 1 << 2,即4。mutexWaiterShift = iota:這一行的常量初始化表達(dá)式與前三行不同,由于該行為第四行,iota的偏移值為3,因此mutexWaiterShift的值就為3。位于同一行的iota即便出現(xiàn)多次,其值也是一樣的

2.常用方式

const (
    _ = iota
    Blue
    Black
    Red
    Yellow
)

默認(rèn)Blue=1,之后如果新加其他常量,不需要賦值,會(huì)自動(dòng)累加

參考圖書《Go語言精進(jìn)之路》,可以抽空翻翻,提高基礎(chǔ)知識(shí),也會(huì)有新的收獲

到此這篇關(guān)于golang中iota的用法小結(jié)的文章就介紹到這了,更多相關(guān)golang iota用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go正則表達(dá)式匹配字符串,替換字符串方式

    Go正則表達(dá)式匹配字符串,替換字符串方式

    介紹了Go語言中使用正則表達(dá)式進(jìn)行字符串匹配和替換的方法,包括匹配單個(gè)子字符串和所有子字符串,個(gè)人經(jīng)驗(yàn)分享,旨在為讀者提供實(shí)用的編程技巧,并鼓勵(lì)大家支持腳本之家
    2025-02-02
  • 一些關(guān)于Go程序錯(cuò)誤處理的相關(guān)建議

    一些關(guān)于Go程序錯(cuò)誤處理的相關(guān)建議

    錯(cuò)誤處理在每個(gè)語言中都是一項(xiàng)重要內(nèi)容,眾所周知,通常寫程序時(shí)遇到的分為異常與錯(cuò)誤兩種,Golang中也不例外,這篇文章主要給大家介紹了一些關(guān)于Go程序錯(cuò)誤處理的相關(guān)建議,需要的朋友可以參考下
    2021-09-09
  • 關(guān)于Golang獲取當(dāng)前項(xiàng)目絕對路徑的問題

    關(guān)于Golang獲取當(dāng)前項(xiàng)目絕對路徑的問題

    這篇文章主要介紹了Golang獲取當(dāng)前項(xiàng)目絕對路徑的問題,通常的做法是go run用于本地開發(fā),用一個(gè)命令中快速測試代碼確實(shí)非常方便;在部署生產(chǎn)環(huán)境時(shí),我們會(huì)通過go build構(gòu)建出二進(jìn)制文件然后上傳到服務(wù)器再去執(zhí)行,那么會(huì)產(chǎn)生什么問題呢?感興趣的朋友一起看看吧
    2022-04-04
  • 基于Golang開發(fā)一個(gè)輕量級(jí)登錄庫/框架

    基于Golang開發(fā)一個(gè)輕量級(jí)登錄庫/框架

    幾乎每個(gè)項(xiàng)目都會(huì)有登錄,退出等用戶功能,而登錄又不單僅僅是登錄,我們要考慮很多東西。所以本文就來用Golang開發(fā)一個(gè)輕量級(jí)登錄庫/框架吧
    2023-05-05
  • golang數(shù)組內(nèi)存分配原理

    golang數(shù)組內(nèi)存分配原理

    這篇文章主要介紹了golang數(shù)組內(nèi)存分配原理,數(shù)組是內(nèi)存中一片連續(xù)的區(qū)域,在聲明時(shí)需要指定長度,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,感興趣的小伙伴可以參考一下
    2022-06-06
  • GoLang sync.Pool簡介與用法

    GoLang sync.Pool簡介與用法

    這篇文章主要介紹了GoLang sync.Pool簡介與用法,Pool是可伸縮、并發(fā)安全的臨時(shí)對象池,用來存放已經(jīng)分配但暫時(shí)不用的臨時(shí)對象,通過對象重用機(jī)制,緩解GC壓力,提高程序性能
    2023-01-01
  • Go語言實(shí)現(xiàn)一個(gè)Http Server框架(二) Server的抽象

    Go語言實(shí)現(xiàn)一個(gè)Http Server框架(二) Server的抽象

    上一篇文章對http庫的基本使用做了說明,這篇文章主要介紹了如何實(shí)現(xiàn)一個(gè)簡單地httpServer,文中代碼示例非常詳細(xì),感興趣的朋友可以參考下
    2023-04-04
  • Golang中的map操作方法詳解

    Golang中的map操作方法詳解

    這篇文章主要給大家介紹了關(guān)于Golang中map操作方法的相關(guān)資料,map是一種無序的基于key-value的數(shù)據(jù)結(jié)構(gòu),Go語言中map是引用類型,必須初始化才能使用,需要的朋友可以參考下
    2023-11-11
  • Golang必知必會(huì)之Go?Mod命令詳解

    Golang必知必會(huì)之Go?Mod命令詳解

    go mod可以使項(xiàng)目從GOPATH的強(qiáng)制依賴中獨(dú)立出來,也就是說你的項(xiàng)目依賴不再需要放在在GOPATH下面了,下面這篇文章主要給大家介紹了關(guān)于Golang必知必會(huì)之Go?Mod命令的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 學(xué)會(huì)提升Go語言編碼效率技巧拒絕加班!

    學(xué)會(huì)提升Go語言編碼效率技巧拒絕加班!

    這篇文章主要為大家介紹了Go語言編碼效率提升技巧詳解,學(xué)會(huì)了從此拒絕加班,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評(píng)論