站長資訊網
        最全最豐富的資訊網站

        Go中數值類型有幾種

        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("%bn", a) //輸出二進制:1000010 	fmt.Printf("%dn", a) //輸出十進制:66 	fmt.Printf("%on", a) //輸出八進制:102 	fmt.Printf("%On", a) //輸出八進制(帶0o前綴):0o102 	fmt.Printf("%xn", a) //輸出十六進制(小寫):42 	fmt.Printf("%Xn", 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("%fn", f) // 112.676899 	// 浮點類型第二種:科學計數法--十進制表示法 	fmt.Printf("%en", f) // 1.126769e+02 	// 浮點類型第二種:科學計數法--十六進制表示法 	fmt.Printf("%xn", 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也有不一樣的, 比如其原生支持復數類型。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 高清免费久久午夜精品| 精品久久久久久久| 999成人精品视频在线| 国内精品久久久久久不卡影院| 热re99久久精品国99热| 久久精品国产99久久久香蕉| 欧美精品香蕉在线观看网| 精品无码AV无码免费专区| 巨大黑人极品VIDEOS精品| 91精品一区二区综合在线| 国产精品亚洲A∨天堂不卡| 亚洲国产精品成人一区| 精品国产一级在线观看| 777欧美午夜精品影院| 99久久精品费精品国产一区二区| 亚洲国产精品一区第二页| 精品欧美一区二区三区久久久| 欧美精品一本久久男人的天堂 | 国产精品欧美久久久久无广告| 国产精品久久午夜夜伦鲁鲁| 性欧洲精品videos| 日韩午夜高清福利片在线观看欧美亚洲精品suv| 成人国内精品久久久久影院VR| 精品一区二区久久| 国产成人精品日本亚洲网址 | 久久成人精品视频| 2022国内精品免费福利视频 | 久久亚洲精品人成综合网| 亚洲精品乱码久久久久久按摩| 亚洲国产精品无码久久青草| 欧美日韩精品一区二区视频| 老司机精品影院91| 亚洲国产精品13p| 亚洲热线99精品视频| 亚洲国产一二三精品无码| 亚洲国产精品成人久久| 亚洲中文久久精品无码ww16 | 亚洲爆乳无码精品AAA片蜜桃| 免费精品精品国产欧美在线欧美高清免费一级在线| 56prom精品视频在放免费| 一区二区三区日韩精品|