Go中數值類型有3種:1、整數類型,可分為平台無關整數及平台相關整數,差異是在不同CPU架構或作業系統下長度是否是一致的。 2.浮點類型,可分為float32與float64兩種,分別對應IEEE754中的單精度與雙精度浮點數值類型。 3.複數,可分為complex128(64位元實數和虛數)和 complex64(32位元實數和虛數)兩種,其中complex128為複數的預設類型。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
Go語言體系中的基本資料型別總是來的來說包括數值型別與字串型別。
而數值型別又可分為以下幾種:整數、浮點數、複數,其中每一種都包含了不同大小的數值類型,例如有符號整數包含int8 、int16、int32、int64 等,每種數值類型都決定了對應的大小範圍和是否支援正負符號。
Go語言整數(整數型別)
#在Go語言中整數分為平台無關整數及平台相關整數,差異主要就在,這些整數類型在不同CPU 架構或作業系統下面,它們的長度是否是一致的。
平台無關整數
而無關整數又區分了有符號整數和無符號整數,其表示的資料範圍是不一樣的。
平台相關整數型
Go原生提供了三個平台相關整數型,分別是int、uint 與 uintptr。
特別注意:在寫有移植性要求的程式碼時,千萬不要強依賴這些類型的長度。
可以透過 unsafe 套件提供的 SizeOf 函數來取得三個整數在平台上的長度。
func main() { var a, b = int(5), uint(6) var p uintptr = 0x12345678 fmt.Println("signed integer a's length is", unsafe.Sizeof(a)) fmt.Println("unsigned integer b's length is", unsafe.Sizeof(b)) fmt.Println("uintptr's length is", unsafe.Sizeof(p)) } // 打印输出 signed integer a's length is 8 unsigned integer b's length is 8 uintptr's length is 8
go提供了標準函式庫fmt套件可以格式化輸出不同進位的形式。
func main() { var a int8 = 66 fmt.Printf("%b\n", a) //输出二进制:1000010 fmt.Printf("%d\n", a) //输出十进制:66 fmt.Printf("%o\n", a) //输出八进制:102 fmt.Printf("%O\n", a) //输出八进制(带0o前缀):0o102 fmt.Printf("%x\n", a) //输出十六进制(小写):42 fmt.Printf("%X\n", a) //输出十六进制(大写):42 }
Go語言提供了float32與float64 兩種浮點類型,它們分別對應的就是IEEE754中的單精度與雙精度浮點數值類型, 這基本上對應於Java中的float和double類型。
Go語言對浮點類型的表示提供了兩種方式, 十進制類型及科學計數法; 而其中科學計數法又分為十進制和十六進制兩種表示方法。
3.1415 .15 // 整数部分如果为0,整数部分可以省略不写 81.80 82. // 小数部分如果为0,小数点后的0可以省略不写
十进制表示法: 6674.28e-2 // 6674.28 * 10^(-2) = 66.742800 .12345E+5 // 0.12345 * 10^5 = 12345.000000 十六进制表示法: 0x2.p10 // 2.0 * 2^10 = 2048.000000 0x1.Fp+0 // 1.9375 * 2^0 = 1.937500
var f float64 = 112.676899 // 浮点类型第一种:十进制表示法 fmt.Printf("%f\n", f) // 112.676899 // 浮点类型第二种:科学计数法--十进制表示法 fmt.Printf("%e\n", f) // 1.126769e+02 // 浮点类型第二种:科学计数法--十六进制表示法 fmt.Printf("%x\n", f) // 0x1.c2b52502eec7dp+06##Go提供兩種複數類型,它們分別是complex64 和complex128,complex64 的實部與虛部都是float32 類型,而complex128 的實部與虛部都是float64 類型。如果複數沒有顯示賦予類型,那麼它的預設類型為 complex128。
Go提供了三種表示方法:
1、使用復數字面值直接初始化一個複數類型變數var c = 5 + 7i var d = 0o123 + .12345E+5i // 83+12345i2、使用Go提供的complex函數,建立一個complex128型別值
var c = complex(5, 6) // 5 + 6i var d = complex(0o123, .12345E+5) // 83+12345i3、使用Go提供的預先定義的函數real和imag,可以取得複數的實部與虛部,傳回值為一個浮點型別
var c = complex(5, 6) // 5 + 6i r := real(c) // 5.000000 i := imag(c) // 6.000000可以透過Go語言提供的type關鍵字基於原生數值類型來聲明一個新類型。 例如,
type NewInt int32NewInt是我們新定義的類型,底層是int32類型,但是和原生類型int32卻是兩種類型,無法直接進行賦值,需要進行顯示轉換才可以。
type NewInt int32 var m int = 5 var n int32 = 6 var a NewInt = NewInt(m) // ok var b NewInt = NewInt(n) // ok當然如果想要能夠直接與原生型別直接賦值使用,Go提供了型別別名(Type Alias)語法來自訂數值型別。
type NewInt = int32 var m int32 = 5 var n NewInt = m#Go 的原生數值型別有三類:整數、浮點型和複數型,透過上面的簡單介紹我們可以知道Go與大多數主流語言基本查不多,當然Go也有不一樣的, 例如其原生支援複數型別。 【相關推薦:
以上是Go中數值類型有幾種的詳細內容。更多資訊請關注PHP中文網其他相關文章!