go 語言使用型別前置加括號的方式進行型別轉換,一般格式如下:
t(表示式)
其中,t 代表要轉換的型別。表示式包括變數、複雜算數和函式返回值等。
型別轉換時,需要考慮兩種型別的關係和範圍,是否會發生數值截斷等,參見下面**:
package main
import (
"fmt"
"math"
)func main()
**說明如下:
**輸出如下:
int8 range: -128 127
int16 range: -32768 32767
int32 range: -2147483648 2147483647
int64 range: -9223372036854775808 9223372036854775807
int32: 0x3e6f54ff 1047483647
int16: 0x54ff 21759
轉換前的值為:3.1415927;轉換後的值為:3
根據輸出結果,16 位有符號整型的範圍是 -32768~32767,而 a 變數的 1047483647 不在這個範圍內。1047483647 對應的十六進製制為 0x3e6f54ff,轉為 16 位變數後,長度縮短一半,也就是在十六進製製上砍掉一半,變成 0x54ff,對應的十進位制值為 21759。
浮點數在轉換為整型時,會將小數部分去掉,只保留整數部分。
整型截斷在型別轉換中發生的較為隱性,有些即為難追查的問題,很小一部分是由整型截斷造成。
提取碼:qysq
收藏
Go語言從入門到精通 資料型別
在 go 程式語言中,資料型別用於宣告函式和變數。資料型別的出現是為了把資料分成所需記憶體大小不同的資料,程式設計的時候需要用大資料的時候才需要申請大記憶體,就可以充分利用記憶體。go 語言按類別有以下幾種資料型別 序號型別和描述 1布林型 布林型的值只可以是常量 true 或者 false。乙個簡...
Go語言從入門到精通 資料型別
在 go 程式語言中,資料型別用於宣告函式和變數。資料型別的出現是為了把資料分成所需記憶體大小不同的資料,程式設計的時候需要用大資料的時候才需要申請大記憶體,就可以充分利用記憶體。go 語言按類別有以下幾種資料型別 序號型別和描述 1布林型 布林型的值只可以是常量 true 或者 false。乙個簡...
Go語言從入門到精通 字元型別
字串中的每乙個元素叫做 字元 在遍歷或者單個獲取字串元素時可以獲得字元。go 語言的字元有以下兩種 使用 fmt.printf 中的 t動詞可以輸出變數的實際型別,使用這個方法可以檢視 byte 和 rune 的本來型別,如下 var a byte a fmt.printf d t n a,a va...