1. 程式人生 > 實用技巧 >Go 型別強制轉換

Go 型別強制轉換

Go 型別強制轉換

強制型別的語法格式:var a T = (T)(b),使用括號將型別和要轉換的變數或表示式的值括起來

強制轉換需要滿足如下任一條件:(x是非常量型別的變數,T是要轉換的型別)

1. x可以直接複製給T型別變數

2. x的型別和T具有相同的底層型別

3. x的型別和T都是未命令的指標型別,並且指標指向的型別具有相同的底層型別

4. x的型別和T都是整型,或都是浮點型,或者都是複數型別

5. x是整數值 或[]byte型別的值,T是string型別

6. x是一個字串,T是[]byte或 []rune

字串和位元組切片之間的轉換最常見,如下:

    s := "hello,世界
" var a []byte a = []byte(s) var b []rune b = []rune(s) fmt.Printf("%T\n", a) fmt.Printf("%T\n", b) fmt.Printf("%T\n", s)

注意:

1. 數值型別和string型別之間的相互轉換可能造成值部分丟失;其他的轉換僅是型別的轉換,不會造成值的改變。string和數字志堅的轉換可使用標準庫strconv

2. Go語言沒有語言機制支援指標和interger之間的直接轉換,可以使用標準庫中的unsafe