go的強制類型轉換

go沒有隱式類型轉換例如"zifu" + 1這種會直接報錯;只有顯示類型轉換,有兩種方式:

①類型斷言:x.(T) 檢查x的動態類型是否是T,其中x必須是接口類型的值,會返回兩個值,第一個是對應類型的值,第二個是bool類型,通過它來判斷是否轉換正確(如果相同則返回斷言成功的類型值,不相同則返回斷言類型的默認值)

var a interface{}
a = "zifu"
re, ok := a.(int)
fmt.Println(re, ok, a)

------------------------
輸出:0 false zifu

②type (a):適用於普通變量類型int, float, string,不過要注意float和string之間不能強轉,要用到strconv包

var a int32 = 10
var b int64 = int64(a)

指針類型的則需要用到unsafe包

var a int = 10
var b *int = &a
var c *int64 = (*int64)(unsafe.Pointer(b))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章