Golang有類型常量和無類型常量的區(qū)別
場景
在 Go 語言中,常量分為有類型常量和無類型常量。
// 有類型常量 const VERSION string = "v1.0.0" // 無類型常量 const RELEASE = 3
那么他們有什么區(qū)別呢?
當(dāng)你把有無類型的常量,賦值給一個(gè)變量的時(shí)候,無類型的常量會被隱式的轉(zhuǎn)化成對應(yīng)的類型。
package main import "fmt" func main() { ? ? const RELEASE = 3 ? ? var x int16 = RELEASE ? ? var y int32 = RELEASE ? ? fmt.Printf("type: %T \n", x) //type: int16 ? ? fmt.Printf("type: %T \n", y) //type: int32? }
可要是有類型常量,不就會進(jìn)行轉(zhuǎn)換,在賦值的時(shí)候,類型檢查就不會通過,從而直接報(bào)錯(cuò)。
package main import "fmt" func main() { ? ? const RELEASE int8 = 3 ? ? var x int16 = RELEASE //cannot use RELEASE (type int8) as type int16 in assignment ? ? var y int32 = RELEASE //cannot use RELEASE (type int8) as type int32 in assignment ? ? fmt.Printf("type: %T \n", x)? ? ? fmt.Printf("type: %T \n", y)? }
解決的方法是進(jìn)行顯式的轉(zhuǎn)換。
package main import "fmt" func main() { ? ? const RELEASE int8 = 3 ? ? var x int16 = int16(RELEASE)? ? ? var y int32 = int32(RELEASE)? ? ? fmt.Printf("type: %T \n", x) ?// type: int16 ? ? fmt.Printf("type: %T \n", y) ?// type: int32 }
到此這篇關(guān)于Golang有類型常量和無類型常量的區(qū)別的文章就介紹到這了,更多相關(guān)Golang有類型常量和無類型常量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go中并發(fā)控制的實(shí)現(xiàn)方式總結(jié)
在Go實(shí)際開發(fā)中,并發(fā)安全是老生常談的事情,在并發(fā)下,goroutine之間的存在數(shù)據(jù)資源等方面的競爭,為了保證數(shù)據(jù)一致性、防止死鎖等問題的出現(xiàn),在并發(fā)中需要使用一些方式來實(shí)現(xiàn)并發(fā)控制,本文給大家總結(jié)了幾種實(shí)現(xiàn)方式,需要的朋友可以參考下2023-12-12文字解說Golang Goroutine和線程的區(qū)別
goroutine 是 Go語言中的輕量級線程實(shí)現(xiàn),由 Go 運(yùn)行時(shí)(runtime)管理,使用每一個(gè) go 關(guān)鍵字將會額外開啟一個(gè)新的協(xié)程 goroutine,今天通過本文給大家介紹下Golang Goroutine和線程的區(qū)別,感興趣的朋友一起看看吧2022-03-03go語言題解LeetCode989數(shù)組形式的整數(shù)加法
這篇文章主要為大家介紹了go語言題解LeetCode989數(shù)組形式的整數(shù)加法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12關(guān)于golang監(jiān)聽rabbitmq消息隊(duì)列任務(wù)斷線自動重連接的問題
這篇文章主要介紹了golang監(jiān)聽rabbitmq消息隊(duì)列任務(wù)斷線自動重連接,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03從并發(fā)到并行解析Go語言中的sync.WaitGroup
Go?語言提供了許多工具和機(jī)制來實(shí)現(xiàn)并發(fā)編程,其中之一就是?sync.WaitGroup。本文就來深入討論?sync.WaitGroup,探索其工作原理和在實(shí)際應(yīng)用中的使用方法吧2023-05-05golang時(shí)間字符串和時(shí)間戳轉(zhuǎn)換的案例
這篇文章主要介紹了golang時(shí)間字符串和時(shí)間戳轉(zhuǎn)換的案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12golang結(jié)構(gòu)化日志log/slog包之slog.Record的用法簡介
這篇文章主要為大家詳細(xì)介紹了golang結(jié)構(gòu)化日志log/slog包中slog.Record結(jié)構(gòu)體的使用方法和需要注意的點(diǎn),文中的示例代碼講解詳細(xì),需要的可以學(xué)習(xí)一下2023-10-10