Golang有類型常量和無類型常量的區(qū)別
場景
在 Go 語言中,常量分為有類型常量和無類型常量。
// 有類型常量 const VERSION string = "v1.0.0" // 無類型常量 const RELEASE = 3
那么他們有什么區(qū)別呢?
當你把有無類型的常量,賦值給一個變量的時候,無類型的常量會被隱式的轉化成對應的類型。
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? }
可要是有類型常量,不就會進行轉換,在賦值的時候,類型檢查就不會通過,從而直接報錯。
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)? }
解決的方法是進行顯式的轉換。
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 }
到此這篇關于Golang有類型常量和無類型常量的區(qū)別的文章就介紹到這了,更多相關Golang有類型常量和無類型常量內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
文字解說Golang Goroutine和線程的區(qū)別
goroutine 是 Go語言中的輕量級線程實現(xiàn),由 Go 運行時(runtime)管理,使用每一個 go 關鍵字將會額外開啟一個新的協(xié)程 goroutine,今天通過本文給大家介紹下Golang Goroutine和線程的區(qū)別,感興趣的朋友一起看看吧2022-03-03go語言題解LeetCode989數(shù)組形式的整數(shù)加法
這篇文章主要為大家介紹了go語言題解LeetCode989數(shù)組形式的整數(shù)加法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12關于golang監(jiān)聽rabbitmq消息隊列任務斷線自動重連接的問題
這篇文章主要介紹了golang監(jiān)聽rabbitmq消息隊列任務斷線自動重連接,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03從并發(fā)到并行解析Go語言中的sync.WaitGroup
Go?語言提供了許多工具和機制來實現(xiàn)并發(fā)編程,其中之一就是?sync.WaitGroup。本文就來深入討論?sync.WaitGroup,探索其工作原理和在實際應用中的使用方法吧2023-05-05golang結構化日志log/slog包之slog.Record的用法簡介
這篇文章主要為大家詳細介紹了golang結構化日志log/slog包中slog.Record結構體的使用方法和需要注意的點,文中的示例代碼講解詳細,需要的可以學習一下2023-10-10