11. Go 语言的无符号整型(uint)

AI 概述
1. 定长类型2. 不定长类型3. 各类型的互相转换4. 小结 上个小节我们主要学习了 Go 语言中的整型 int 数据类型,本小节主要介绍了 Go 语言中处理无符号的整数的数据类型。 1. 定长类型 类型 长度 uint8 0~255 uint16 0~65535 uint32 0~4294967295 uint64 0~18446744073709551615 2. 不...
目录
文章目录隐藏
  1. 1. 定长类型
  2. 2. 不定长类型
  3. 3. 各类型的互相转换
  4. 4. 小结

上个小节我们主要学习了 Go 语言中的整型 int 数据类型,本小节主要介绍了 Go 语言中处理无符号的整数的数据类型。

1. 定长类型

类型 长度
uint8 0~255
uint16 0~65535
uint32 0~4294967295
uint64 0~18446744073709551615

2. 不定长类型

在 Go 语言中也实现了随着平台位数变化而变化的数据类型uint。一般来说,这个类型在 32 位的系统中长度和uint32一致,在 64 位的系统中长度和uint64一致。

package main

import (
    "fmt"
    "math"
)

func main() {
    var num uint
    num = math.MaxUint64 //将 e 赋予 uint64 的最大值:18446744073709551615
    fmt.Println(num)
}

在 64 位环境中执行结果:

64 位操作系统执行结果

在 32 位环境中,因为int的长度与int32相等了,只有 32 位,所以执行时会报超出取值范围的错误:

32 位操作系统执行结果

3. 各类型的互相转换

Go 语言是强类型语言,各个虽然同是无符号整型,但是不同无符号整型的变量不允许直接赋值,需要进行强制类型转换,同时长度大的无符号整型向长度小的无符号整型转换时,要考虑溢出问题。而且不同类的整型无法进行运算,想要进行运算必须要进行强制类型转换,使他们都变成同一类型之后,再运算。举一个 uint8 和 uint16 类型的变量赋值与计算的例子:

package main

import (
    "fmt"
    "math"
)

func main() {
    var a uint8 = math.MaxUint8
    var b uint16 = math.MaxUint8 + 1
    fmt.Println(a, b)

    a = uint8(b)
    fmt.Println(a, b) //因为 b 长度过长,在转换为 uint8 的过程中溢出了

    //无符号整型变量可以和常数进行计算
    a = a + 1
    b = b + 1
    fmt.Println(a, b)

    //不同类型的无符号整型变量计算必须强转为相同类型,一般转换为长度大的来计算
    c := uint16(a) + b
    fmt.Println(c)
}

输出结果:

各类型相互转换输出结果

4. 小结

本文主要学习了 Go 语言中的无符号整型的使用,注意高精度向低精度转失真的风险。

以上关于11. Go 语言的无符号整型(uint)的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 11. Go 语言的无符号整型(uint)

发表回复