Go中的數(shù)值類型有哪些

這篇“Go中的數(shù)值類型有哪些”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“Go中的數(shù)值類型有哪些”文章吧。

創(chuàng)新互聯(lián)是一家專業(yè)提供丹寨企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站建設(shè)、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為丹寨眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

Go中數(shù)值類型有3種:1、整數(shù)類型,可分為平臺(tái)無(wú)關(guān)整型及平臺(tái)相關(guān)整型,區(qū)別是在不同CPU架構(gòu)或操作系統(tǒng)下長(zhǎng)度是否是一致的。2、浮點(diǎn)類型,可分為float32與float64兩種,分別對(duì)應(yīng)IEEE754中的單精度與雙精度浮點(diǎn)數(shù)值類型。3、復(fù)數(shù),可分為complex128(64位實(shí)數(shù)和虛數(shù))和 complex64(32位實(shí)數(shù)和虛數(shù))兩種,其中complex128為復(fù)數(shù)的默認(rèn)類型。

Go語(yǔ)言體系中的基本數(shù)據(jù)類型總來(lái)的來(lái)說(shuō)包括數(shù)值類型與字符串類型。

而數(shù)值類型又可分為以下幾種:整數(shù)、浮點(diǎn)數(shù)、復(fù)數(shù),其中每一種都包含了不同大小的數(shù)值類型,例如有符號(hào)整數(shù)包含 int8、int16、int32、int64 等,每種數(shù)值類型都決定了對(duì)應(yīng)的大小范圍和是否支持正負(fù)符號(hào)。

Go語(yǔ)言整型(整數(shù)類型)

在Go語(yǔ)言中整型分為平臺(tái)無(wú)關(guān)整型及平臺(tái)相關(guān)整型,區(qū)別主要就在,這些整數(shù)類型在不同CPU 架構(gòu)或操作系統(tǒng)下面,它們的長(zhǎng)度是否是一致的。

平臺(tái)無(wú)關(guān)整型

而無(wú)關(guān)整型又區(qū)分了有符號(hào)整型和無(wú)符號(hào)整型,其表示的數(shù)據(jù)范圍是不一樣的。

Go中的數(shù)值類型有哪些

平臺(tái)相關(guān)整型

Go原生提供了三個(gè)平臺(tái)相關(guān)整型,分別是int、uint 與 uintptr。

Go中的數(shù)值類型有哪些

特別注意:在編寫有移植性要求的代碼時(shí),千萬(wàn)不要強(qiáng)依賴這些類型的長(zhǎng)度。

可以通過(guò) unsafe 包提供的 SizeOf 函數(shù)來(lái)獲取三個(gè)整型在平臺(tái)上的長(zhǎng)度。

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提供了標(biāo)準(zhǔn)庫(kù)fmt包可以格式化輸出不同進(jìn)制的形式。

func main() {
	var a int8 = 66
	fmt.Printf("%b\n", a) //輸出二進(jìn)制:1000010
	fmt.Printf("%d\n", a) //輸出十進(jìn)制:66
	fmt.Printf("%o\n", a) //輸出八進(jìn)制:102
	fmt.Printf("%O\n", a) //輸出八進(jìn)制(帶0o前綴):0o102
	fmt.Printf("%x\n", a) //輸出十六進(jìn)制(小寫):42
	fmt.Printf("%X\n", a) //輸出十六進(jìn)制(大寫):42
}

Go語(yǔ)言浮點(diǎn)類型(小數(shù)類型)

Go語(yǔ)言提供了float32與float64 兩種浮點(diǎn)類型,它們分別對(duì)應(yīng)的就是IEEE754中的單精度與雙精度浮點(diǎn)數(shù)值類型, 這基本上對(duì)應(yīng)于Java中的float和double類型。

Go語(yǔ)言對(duì)浮點(diǎn)類型的表示提供了兩種方式, 十進(jìn)制類型及科學(xué)計(jì)數(shù)法; 而其中科學(xué)計(jì)數(shù)法又分為十進(jìn)制和十六進(jìn)制兩種表示方法。

十進(jìn)制表示法

3.1415
.15  // 整數(shù)部分如果為0,整數(shù)部分可以省略不寫
81.80
82. // 小數(shù)部分如果為0,小數(shù)點(diǎn)后的0可以省略不寫

科學(xué)計(jì)數(shù)法

十進(jìn)制表示法:

6674.28e-2 // 6674.28 * 10^(-2) = 66.742800
.12345E+5  // 0.12345 * 10^5 = 12345.000000

十六進(jìn)制表示法:

0x2.p10  // 2.0 * 2^10 = 2048.000000
0x1.Fp+0 // 1.9375 * 2^0 = 1.937500

格式化輸出

var f float64 = 112.676899
	// 浮點(diǎn)類型第一種:十進(jìn)制表示法
	fmt.Printf("%f\n", f) // 112.676899
	// 浮點(diǎn)類型第二種:科學(xué)計(jì)數(shù)法--十進(jìn)制表示法
	fmt.Printf("%e\n", f) // 1.126769e+02
	// 浮點(diǎn)類型第二種:科學(xué)計(jì)數(shù)法--十六進(jìn)制表示法
	fmt.Printf("%x\n", f) // 0x1.c2b52502eec7dp+06

Go語(yǔ)言復(fù)數(shù)

Go 提供兩種復(fù)數(shù)類型,它們分別是 complex64 和 complex128,complex64 的實(shí)部與虛部都是 float32 類型,而 complex128 的實(shí)部與虛部都是 float64 類型。如果一個(gè)復(fù)數(shù)沒(méi)有顯示賦予類型,那么它的默認(rèn)類型為 complex128。

Go提供了三種表示方法:

1、使用復(fù)數(shù)字面值直接初始化一個(gè)復(fù)數(shù)類型變量

var c = 5 + 7i
var d = 0o123 + .12345E+5i // 83+12345i

2、使用Go提供的complex函數(shù),創(chuàng)建一個(gè)complex128類型值

var c = complex(5, 6) // 5 + 6i
var d = complex(0o123, .12345E+5) // 83+12345i

3、使用Go提供的預(yù)定義的函數(shù)real和imag,可以獲取一個(gè)復(fù)數(shù)的實(shí)部與虛部,返回值為一個(gè)浮點(diǎn)類型

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

擴(kuò)展知識(shí):自定義數(shù)值類型

可以通過(guò)Go語(yǔ)言提供的type關(guān)鍵字基于原生數(shù)值類型來(lái)聲明一個(gè)新類型。

比如,

type NewInt int32

NewInt是我們新定義的類型,底層是int32類型,但是和原生類型int32卻是兩種類型,無(wú)法直接進(jìn)行賦值,需要進(jìn)行顯示轉(zhuǎn)換才可以。

type NewInt int32

	var m int = 5
	var n int32 = 6
	var a NewInt = NewInt(m) // ok
	var b NewInt = NewInt(n) // ok

當(dāng)然如果想要能夠直接與原生類型直接賦值使用,Go提供了類型別名(Type Alias)語(yǔ)法來(lái)自定義數(shù)值類型。

type NewInt = int32

	var m int32 = 5
	var n NewInt = m

以上就是關(guān)于“Go中的數(shù)值類型有哪些”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁(yè)標(biāo)題:Go中的數(shù)值類型有哪些
文章地址:http://muchs.cn/article0/pdppoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、響應(yīng)式網(wǎng)站、網(wǎng)站改版軟件開發(fā)、網(wǎng)站維護(hù)、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名