首頁  >  文章  >  後端開發  >  Go中數值類型有幾種

Go中數值類型有幾種

青灯夜游
青灯夜游原創
2023-01-09 11:08:111799瀏覽

Go中數值類型有3種:1、整數類型,可分為平台無關整數及平台相關整數,差異是在不同CPU架構或作業系統下長度是否是一致的。 2.浮點類型,可分為float32與float64兩種,分別對應IEEE754中的單精度與雙精度浮點數值類型。 3.複數,可分為complex128(64位元實數和虛數)和 complex64(32位元實數和虛數)兩種,其中complex128為複數的預設類型。

Go中數值類型有幾種

本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

Go語言體系中的基本資料型別總是來的來說包括數值型別與字串型別。

而數值型別又可分為以下幾種:整數、浮點數、複數,其中每一種都包含了不同大小的數值類型,例如有符號整數包含int8 、int16、int32、int64 等,每種數值類型都決定了對應的大小範圍和是否支援正負符號。

Go語言整數(整數型別)

#在Go語言中整數分為平台無關整數及平台相關整數,差異主要就在,這些整數類型在不同CPU 架構或作業系統下面,它們的長度是否是一致的。

平台無關整數

而無關整數又區分了有符號整數和無符號整數,其表示的資料範圍是不一樣的。

Go中數值類型有幾種

平台相關整數型

Go原生提供了三個平台相關整數型,分別是int、uint 與 uintptr。

Go中數值類型有幾種

特別注意:在寫有移植性要求的程式碼時,千萬不要強依賴這些類型的長度。

可以透過 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語言浮點型別(小數型別)

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語言複數

##Go提供兩種複數類型,它們分別是complex64 和complex128,complex64 的實部與虛部都是float32 類型,而complex128 的實部與虛部都是float64 類型。如果複數沒有顯示賦予類型,那麼它的預設類型為 complex128。

Go提供了三種表示方法:

1、使用復數字面值直接初始化一個複數類型變數

var c = 5 + 7i
var d = 0o123 + .12345E+5i // 83+12345i
2、使用Go提供的complex函數,建立一個complex128型別值

var c = complex(5, 6) // 5 + 6i
var d = complex(0o123, .12345E+5) // 83+12345i
3、使用Go提供的預先定義的函數real和imag,可以取得複數的實部與虛部,傳回值為一個浮點型別

var c = complex(5, 6) // 5 + 6i
r := real(c) // 5.000000
i := imag(c) // 6.000000

擴展知識:自訂數值類型

可以透過Go語言提供的type關鍵字基於原生數值類型來聲明一個新類型。

例如,

type NewInt int32
NewInt是我們新定義的類型,底層是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影片教學程式設計教學

以上是Go中數值類型有幾種的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn