Golang有類型常量和無(wú)類型常量的區(qū)別
場(chǎng)景
在 Go 語(yǔ)言中,常量分為有類型常量和無(wú)類型常量。
// 有類型常量 const VERSION string = "v1.0.0" // 無(wú)類型常量 const RELEASE = 3
那么他們有什么區(qū)別呢?
當(dāng)你把有無(wú)類型的常量,賦值給一個(gè)變量的時(shí)候,無(wú)類型的常量會(huì)被隱式的轉(zhuǎn)化成對(duì)應(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?
}可要是有類型常量,不就會(huì)進(jìn)行轉(zhuǎn)換,在賦值的時(shí)候,類型檢查就不會(huì)通過(guò),從而直接報(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有類型常量和無(wú)類型常量的區(qū)別的文章就介紹到這了,更多相關(guān)Golang有類型常量和無(wú)類型常量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語(yǔ)言中調(diào)用外部命令的方法總結(jié)
在工作中,我們時(shí)不時(shí)地會(huì)需要在Go中調(diào)用外部命令。本文為大家總結(jié)了Go語(yǔ)言中調(diào)用外部命令的幾種姿勢(shì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-11-11
Golang使用原生http實(shí)現(xiàn)中間件的代碼詳解
中間件(middleware):常被用來(lái)做認(rèn)證校驗(yàn)、審計(jì)等,家常用的Iris、Gin等web框架,都包含了中間件邏輯,但有時(shí)我們引入該框架顯得較為繁重,本文將介紹通過(guò)golang原生http來(lái)實(shí)現(xiàn)中間件操作,需要的朋友可以參考下2024-05-05
Go 中 slice 的 In 功能實(shí)現(xiàn)探索
這篇文章主要介紹了Go 中 slice 的 In 功能實(shí)現(xiàn)探索,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
深入理解Go Gin框架中間件的實(shí)現(xiàn)原理
在Go Gin框架中,中間件是一種在請(qǐng)求處理過(guò)程中插入的功能模塊,它可以用于處理請(qǐng)求的前置和后置邏輯,例如認(rèn)證、日志記錄、錯(cuò)誤處理等,本文將給大家介紹一下Go Gin框架中間件的實(shí)現(xiàn)原理,需要的朋友可以參考下2023-09-09

