最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言中的iota關(guān)鍵字的使用

 更新時間:2023年08月31日 15:46:12   作者:fliter  
這篇文章主要為大家詳細(xì)介紹了Go語言中的iota關(guān)鍵字的相關(guān)使用,文中的示例代碼講解詳細(xì),對我們深入了解Go語言有一定的幫助,需要的可以參考下

基本使用

示例

package main
import "fmt"
const a0 = iota // a0 = 0  // const出現(xiàn), iota初始化為0
const (
	a1 = iota // a1 = 0   // 又一個const出現(xiàn), iota初始化為0
	a2 = iota // a2 = 1   // const新增一行, iota 加1
	a3 = 6    // a3 = 6   // 自定義一個常量
	a4        // a4 = 6   // 不賦值就和上一行相同
	a5 = iota // a5 = 4   // const已經(jīng)新增了4行, 所以這里是4
)
const (
	b = iota // b = 0
	c        // c = 1
	d = 1111
	e
	f = iota
)
const (
	TestMin = -1
	TestA
	TestB = iota
	TestC
)
func main() {
	fmt.Println("a0:", a0)
	fmt.Println("a1:", a1)
	fmt.Println("a2:", a2)
	fmt.Println("a3:", a3)
	fmt.Println("a4:", a4)
	fmt.Println("a5:", a5)
	fmt.Println("---------")
	fmt.Println("b is:", b)
	fmt.Println("c is:", c)
	fmt.Println("d is:", d)
	fmt.Println("e is:", e)
	fmt.Println("f is:", f)
	fmt.Println("---------")
	fmt.Println("TestMin:", TestMin)
	fmt.Println("TestA:", TestA)
	fmt.Println("TestB:", TestB)
	fmt.Println("TestC:", TestC)
}

輸出為:

a0: 0
a1: 0
a2: 1
a3: 6
a4: 6
a5: 4
---------
b is: 0
c is: 1
d is: 1111
e is: 1111
f is: 4
---------
TestMin: -1
TestA: -1
TestB: 2
TestC: 3

示例 

package main
import "fmt"
// 跳值使用iota使用_來達(dá)到目的:
const (
	h = iota // 0
	i = iota // 1
	_
	k = iota // 3
)
// 當(dāng)常量表達(dá)式為空時,會自動繼承上一個存在非空的表達(dá)式。
const (
	x = iota * 2
	y
	z
)
func main() {
	fmt.Println(h)
	fmt.Println(i)
	fmt.Println(k)
	fmt.Println("-------")
	fmt.Println(x)
	fmt.Println(y)
	fmt.Println(z)
}

輸出為

0
1
3
-------
0
2
4

用來定義枚舉值

package main
import "fmt"
type OrderState uint8
const (
	// 0-待支付
	WaitPay OrderState = iota
	// 1-支付中
	Paying
	// 2-支付成功
	PaySucc
	// 3-支付失敗
	PayFail
)
// 對應(yīng)于xx表is_show字段
const (
	_       uint8 = iota
	Show          // 1-顯示
	NotShow       // 2-不顯示
)
func main() {
	fmt.Println(PaySucc)
	fmt.Println(Show)
}

輸出為

2
1

高階用法

package main
import (
	"fmt"
)
const (
	i = 1 << iota
	j = 3 << iota
	k
	l
)
func main() {
	fmt.Println("i=", i)
	fmt.Println("j=", j)
	fmt.Println("k=", k)
	fmt.Println("l=", l)
}

輸出為

i= 1
j= 6
k= 12
l= 24

iota每出現(xiàn)一次,自動加1;而前面的操作數(shù)如果不指定,默認(rèn)使用上一個的,在這里是3;

    i=1<<iota
    j=3<<iota
    k
    l

等價于

    i=1<<0
    j=3<<1
    k=3<<2
    l=3<<3

又如

package main
import "fmt"
func main() {
	const (
		IgEggs         = 1 << iota // 1 << 0 which is 00000001
		IgChocolate                // 1 << 1 which is 00000010
		IgNuts                     // 1 << 2 which is 00000100
		IgStrawberries             // 1 << 3 which is 00001000
		IgShellfish                // 1 << 4 which is 00010000
	)
	fmt.Println(IgEggs, IgChocolate, IgNuts, IgStrawberries, IgShellfish)
}

輸出為

1 2 4 8 16

每次可以左移一位,因此對于定義數(shù)量級大有裨益

package main
import "fmt"
type ByteSize int64
const (
	_           = iota             // ignore first value by assigning to blank identifier
	KB ByteSize = 1 << (10 * iota) // 1 << (10*1)
	MB                             // 1 << (10*2)
	GB                             // 1 << (10*3)
	TB                             // 1 << (10*4)
	PB                             // 1 << (10*5)
	EB                             // 1 << (10*6)
	//ZB                             // 1 << (10*7)
	//YB                             // 1 << (10*8)
)
func main() {
	fmt.Printf("KB= %d Byte\n", KB)
	fmt.Printf("MB= %d Byte\n", MB)
	fmt.Printf("GB= %d Byte\n", GB)
}

輸出為

KB= 1024 Byte
MB= 1048576 Byte
GB= 1073741824 Byte

以上就是Go語言中的iota關(guān)鍵字的使用的詳細(xì)內(nèi)容,更多關(guān)于Go iota的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang使用WebSocket通信的實現(xiàn)

    Golang使用WebSocket通信的實現(xiàn)

    這篇文章主要介紹了Golang使用WebSocket通信的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Go語言流程控制詳情

    Go語言流程控制詳情

    這篇文章主要介紹了Go語言流程控制詳情,流程控制包含分三大類:條件判斷,循環(huán)控制和無條件跳轉(zhuǎn)。下面關(guān)于更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-03-03
  • Golang filepath包常用函數(shù)詳解

    Golang filepath包常用函數(shù)詳解

    本文介紹與文件路徑相關(guān)包,該工具包位于path/filepath中,該包試圖與目標(biāo)操作系統(tǒng)定義的文件路徑兼容。本文介紹一些常用函數(shù),如獲取文件絕對路徑,獲取文件名或目錄名、遍歷文件、分割文件路徑、文件名模式匹配等函數(shù),并給具體示例進行說明
    2023-02-02
  • 一文帶你掌握Go語言中文件的寫入操作

    一文帶你掌握Go語言中文件的寫入操作

    這篇文章主要和大家分享一下Go語言中文件的寫入操作,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Go語言有一定的幫助,需要的小伙伴可以參考一下
    2022-12-12
  • golang使用OpenTelemetry實現(xiàn)跨服務(wù)全鏈路追蹤詳解

    golang使用OpenTelemetry實現(xiàn)跨服務(wù)全鏈路追蹤詳解

    這篇文章主要為大家介紹了golang使用OpenTelemetry實現(xiàn)跨服務(wù)全鏈路追蹤詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Go?語言使用goroutine運行閉包踩坑分析

    Go?語言使用goroutine運行閉包踩坑分析

    這篇文章主要介紹了Go?語言使用goroutine運行閉包踩坑解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Golang實現(xiàn)Json轉(zhuǎn)結(jié)構(gòu)體的示例詳解

    Golang實現(xiàn)Json轉(zhuǎn)結(jié)構(gòu)體的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Golang實現(xiàn)Json轉(zhuǎn)結(jié)構(gòu)體的方法,文中的示例代碼講解詳細(xì),對學(xué)習(xí)Go語言有一定的幫助,需要的可以參考一下
    2023-02-02
  • GOLang單元測試用法詳解

    GOLang單元測試用法詳解

    Go語言中自帶有一個輕量級的測試框架testing和自帶的go test命令來實現(xiàn)單元測試和性能測試。本文將通過示例詳細(xì)聊聊Go語言單元測試的原理與使用,需要的可以參考一下
    2022-12-12
  • Go實現(xiàn)替換(覆蓋)文件某一行內(nèi)容的示例代碼

    Go實現(xiàn)替換(覆蓋)文件某一行內(nèi)容的示例代碼

    本文主要介紹了Go實現(xiàn)替換(覆蓋)文件某一行內(nèi)容的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Go?gRPC服務(wù)proto數(shù)據(jù)驗證進階教程

    Go?gRPC服務(wù)proto數(shù)據(jù)驗證進階教程

    這篇文章主要為大家介紹了Go?gRPC服務(wù)proto數(shù)據(jù)驗證進階教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06

最新評論

任丘市| 鱼台县| 内丘县| 神池县| 额济纳旗| 宜良县| 龙里县| 唐海县| 类乌齐县| 苏尼特左旗| 开阳县| 军事| 格尔木市| 林周县| 囊谦县| 旌德县| 丘北县| 马关县| 麻栗坡县| 抚州市| 望奎县| 尼玛县| 巧家县| 松江区| 开封市| 大邑县| 上虞市| 奇台县| 丰县| 江城| 平邑县| 东阳市| 东源县| 崇左市| 迁西县| 大安市| 新源县| 嘉荫县| 安陆市| 巨鹿县| 正宁县|