解讀golang中的const常量和iota
golang中的const常量和iota
golang中通過(guò)var定義變量,通過(guò)const定義常量。
常量只能是基本的簡(jiǎn)單值類型,常量一經(jīng)定義其值不可修改(類比Java中的final)。
const ( ?? ?MaxInt = int(^uint(0) >> 1) ?? ?MinInt = -MaxInt - 1 ) const PI = 3.14 PI = 3.14159//編譯錯(cuò)誤,Cannot assign to PI
iota是一個(gè)特殊常量,可以認(rèn)為是一個(gè)可以被編譯器修改的常量。iota在const關(guān)鍵字出現(xiàn)時(shí)將被重置為0,const中每新增一行常量聲明將使 iota 計(jì)數(shù)加1,因此iota可作為const 語(yǔ)句塊中的行索引。
const ( ?? ?a ? = 1 ? ? ? ? ? ? ? ? ?//1 (iota=0) ?? ?b ? ? ? ? ? ? ? ? ? ? ? ?//1 (iota=1,同上一行,相當(dāng)于寫b=1) ?? ?c ? = b + iota ? ? ? ? ? //3 (iota=2,b=1) ?? ?d ? ? ? ? ? ? ? ? ? ? ? ?//4 (iota=3,同上一行,相當(dāng)于寫b+iota,b=1) ?? ?e ? ? ? ? ? ? ? ? ? ? ? ?//5 (iota=4,同上一行,相當(dāng)于寫b+iota,b=1) ?? ?f ? = "last one but one" // ?(iota=5) ?? ?end = iota ? ? ? ? ? ? ? //6 (iota=6) ) fmt.Println(a, reflect.TypeOf(a)) fmt.Println(b, reflect.TypeOf(b)) fmt.Println(c, reflect.TypeOf(c)) fmt.Println(d, reflect.TypeOf(d)) fmt.Println(e, reflect.TypeOf(e)) fmt.Println(f, reflect.TypeOf(f)) fmt.Println(end, reflect.TypeOf(end)) /*? 輸出: 1 int 1 int 3 int 4 int 5 int last one but one string 6 int */
golang定義常量
在所有的編程語(yǔ)言當(dāng)中常量都代表一個(gè)固定的值,一旦常量被定義則無(wú)法修改。在Golang中使用const關(guān)鍵字進(jìn)行常量聲明。
定義常量
Golang定義常規(guī)類型的常量可以忽略類型。
const SUCCESS = true const FAIL = false
定義多個(gè)相同類型的常量
const ( CONST1 = 0 CONST2 = 1 CONST3 = 2 )
定義特定類型的常量
定義特定類型的常量需要根據(jù)實(shí)際情況來(lái)決定。
假如我們現(xiàn)在用常量來(lái)聲明用戶的三個(gè)基本狀態(tài)(正常,禁止登錄,刪除),一般這種情況我們會(huì)首先聲明一個(gè)用戶狀態(tài)的類型。
聲明用戶狀態(tài)類型:
type UserStatus int
定義用戶狀態(tài)常量:
const ( USER_STATUS_NORMAL UserStatus = iota USER_STATUS_DISABLED_LOGIN USER_STATUS_DELETE )
完整示例:
package user //Status 用戶類型. type Status int const ( //STATUS_NORMAL 狀態(tài)正常 STATUS_NORMAL Status = iota //STATUS_DISABLED_LOGIN 禁止登錄. STATUS_DISABLED_LOGIN //STATUS_DELETE 已刪除. STATUS_DELETE )
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Go開源項(xiàng)目分布式唯一ID生成系統(tǒng)
這篇文章主要為大家介紹了Go開源項(xiàng)目分布式唯一ID生成系統(tǒng)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
一文教你如何快速學(xué)會(huì)Go的切片和數(shù)組數(shù)據(jù)類型
數(shù)組是屬于同一類型的元素的集合。切片是數(shù)組頂部的方便、靈活且功能強(qiáng)大的包裝器。本文就來(lái)和大家聊聊Go中切片和數(shù)組的使用,需要的可以參考一下2023-03-03
Go語(yǔ)言實(shí)現(xiàn)高并發(fā)百萬(wàn)QPS的關(guān)鍵技術(shù)棧
Go語(yǔ)言憑借其輕量級(jí)goroutine和高效的調(diào)度器,天然適合高并發(fā)場(chǎng)景,Go語(yǔ)言通過(guò)Goroutine調(diào)度優(yōu)化、I/O多路復(fù)用等技術(shù)實(shí)現(xiàn)高并發(fā),結(jié)合性能調(diào)優(yōu)與架構(gòu)設(shè)計(jì),可支撐百萬(wàn)QPS,延遲低于5ms,支持未來(lái)擴(kuò)展2025-05-05
golang goquery selector選擇器使用示例大全
這篇文章主要為大家介紹了golang goquery selector選擇器使用示例大全,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09

