久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

Go 語(yǔ)言的無(wú)符號(hào)整型(uint)

上個(gè)小節(jié)我們主要學(xué)習(xí)了 Go 語(yǔ)言中的整型 int 數(shù)據(jù)類(lèi)型,本小節(jié)主要介紹了 Go 語(yǔ)言中處理無(wú)符號(hào)的整數(shù)的數(shù)據(jù)類(lèi)型。

 

1. 定長(zhǎng)類(lèi)型

序號(hào) 類(lèi)型 長(zhǎng)度
1 uint8 0~255
2 uint16 0~65535
3 uint32 0~4294967295
4 uint64 0~18446744073709551615

 

2. 不定長(zhǎng)類(lèi)型

在 Go 語(yǔ)言中也實(shí)現(xiàn)了隨著平臺(tái)位數(shù)變化而變化的數(shù)據(jù)類(lèi)型uint。一般來(lái)說(shuō),這個(gè)類(lèi)型在32位的系統(tǒng)中長(zhǎng)度和uint32一致,在64位的系統(tǒng)中長(zhǎng)度和uint64一致。

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? "fmt"
  • 5? ? ? ? "math"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ?? var num uint
  • 10? ? ?? num = math.MaxUint64 //將e賦予uint64的最大值:18446744073709551615
  • 11? ? ?? fmt.Println(num)
  • 12 }

在 64 位環(huán)境中執(zhí)行結(jié)果:

圖片描述
64 位操作系統(tǒng)執(zhí)行結(jié)果

在 32 位環(huán)境中,因?yàn)?code>int的長(zhǎng)度與int32相等了,只有32位,所以執(zhí)行時(shí)會(huì)報(bào)超出取值范圍的錯(cuò)誤:

圖片描述
64 位操作系統(tǒng)執(zhí)行結(jié)果

 

3. 各類(lèi)型的互相轉(zhuǎn)換

Go 語(yǔ)言是強(qiáng)類(lèi)型語(yǔ)言,各個(gè)雖然同是無(wú)符號(hào)整型,但是不同無(wú)符號(hào)整型的變量不允許直接賦值,需要進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換,同時(shí)長(zhǎng)度大的無(wú)符號(hào)整型向長(zhǎng)度小的無(wú)符號(hào)整型轉(zhuǎn)換時(shí),要考慮溢出問(wèn)題。而且不同類(lèi)的整型無(wú)法進(jìn)行運(yùn)算,想要進(jìn)行運(yùn)算必須要進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換,使他們都變成同一類(lèi)型之后,再運(yùn)算。舉一個(gè)?uint8?和?uint16?類(lèi)型的變量賦值與計(jì)算的例子:


代碼塊
  • 1 package main?
  • 2
  • 3? import (
  • 4? ? ? ? "fmt"
  • 5? ? ? ? "math"
  • 6? )
  • 7
  • 8 ?func main() {
  • 9? ? ? ? ? var a uint8 = math.MaxUint8
  • 10? ? ? ? var b uint16 = math.MaxUint8 + 1
  • 11? ? ? ? fmt.Println(a, b)
  • 12
  • 13? ? ? ? a = uint8(b)
  • 14? ? ? ? fmt.Println(a, b) //因?yàn)閎長(zhǎng)度過(guò)長(zhǎng),在轉(zhuǎn)換為uint8的過(guò)程中溢出了
  • 15
  • 16? ? ? ? //無(wú)符號(hào)整型變量可以和常數(shù)進(jìn)行計(jì)算
  • 17? ? ? ? a = a + 1
  • 18? ? ? ? b = b + 1
  • 19? ? ? ? fmt.Println(a, b)
  • 20
  • 21? ? ? ? //不同類(lèi)型的無(wú)符號(hào)整型變量計(jì)算必須強(qiáng)轉(zhuǎn)為相同類(lèi)型,一般轉(zhuǎn)換為長(zhǎng)度大的來(lái)計(jì)算
  • 22? ? ? ? c := uint16(a) + b
  • 23? ? ? ? fmt.Println(c)
  • 24? }

輸出結(jié)果:

圖片描述
各類(lèi)型相互轉(zhuǎn)換輸出結(jié)果

 

4. 小結(jié)

本文主要學(xué)習(xí)了 Go 語(yǔ)言中的無(wú)符號(hào)整型的使用,注意高精度向低精度轉(zhuǎn)失真的風(fēng)險(xiǎn)。

文章來(lái)源于網(wǎng)絡(luò),侵刪!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開(kāi)發(fā)專(zhuān)業(yè)人才培訓(xùn)機(jī)構(gòu)!

    1. 主站蜘蛛池模板: 周口市| 兰西县| 大荔县| 济源市| 南昌县| 襄汾县| 威海市| 高要市| 蓝山县| 永胜县| 陆良县| 北碚区| 沈丘县| 温州市| 镶黄旗| 林周县| 龙州县| 通化县| 惠水县| 吉林省| 楚雄市| 吕梁市| 确山县| 镇康县| 大港区| 明光市| 洪湖市| 砚山县| 棋牌| 西乌珠穆沁旗| 永吉县| 江津市| 自贡市| 称多县| 靖边县| 泸溪县| 红桥区| 吉安县| 宝鸡市| 沂水县| 汉阴县|