Go 语言的整型(int)数据类型
还记得我们之前在第 7 小节和第 8 小节中提到的变量数据类型的概念吗?从这个小节开始到后面的几个小节中我们都会进行对 Go 语言中的数据类型相关知识点进行讲解,本节课我们主要讲解一下 Go 语言中处理 带符号 的整数的数据类型。
1. 定长类型
在 Go 语言中整形数据类型被细致地划分为了下面几种,根据可以存储数据的长度分为:
序号 | 类型 | 长度 |
---|---|---|
1 | int8 | -128~127 |
2 | int16 | -32768~32767 |
3 | int32 | -2147483648~2147483647 |
4 | int64 | -9223372036854775808~9223372036854775807 |
2. 不定长类型
在 Go 语言中也实现了随着平台位数变化而变化的数据类型int
。一般来说,这个类型在 32位 的系统中长度和int32
一致,在 64位 的系统中长度和int64
一致。
package main
import (
"fmt"
"math"
)
func main() {
var num int
num = math.MaxInt64//将e赋予int64的最大值:9223372036854775807
fmt.Println(num)
}
在 64 位操作系统环境中执行结果:
64 位操作系统执行结果
在 32位 操作系统环境中,因为int
的长度与int32
相等了,只有 32位 ,所以执行会报 超出取值范围 的错误:
32 位操作系统执行结果
3. 各类型的互相转换
Go 语言是强类型语言,各个虽然同是整型,但是不同整型的变量不允许直接赋值,需要进行强制类型转换,同时长度大的整型向长度小的整型转换时,要考虑 溢出 问题。而且不同类的整型无法进行运算,想要进行运算必须要进行强制类型转换,使他们都变成 同一类型 之后,再运算。举一个int8
和int16
类型的变量赋值与计算的例子:
package main
import (
"fmt"
"math"
)
func main() {
var a int8 = math.MaxInt8
var b int16 = math.MaxInt8 + 1
fmt.Println(a, b)
a = int8(b)
fmt.Println(a, b) //因为b长度过长,在转换为int8的过程中溢出了
//整型变量可以和常数进行计算
a = a + 1
b = b + 1
fmt.Println(a, b)
//不同类型的整型变量计算必须强转为相同类型,一般转换为长度大的来计算
c := int16(a) + b
fmt.Println(c)
}
输出结果:
各类型互相转换输出结果
3. 小结
这一小节中我们主要介绍了有符号整形数据类型,整形数据类型根据可以存储的数据长度分为了: int8
、 int16
、 int32
、 int64
,我们在使用的时候要根据条件需求来决定变量的数据类型,同时也要注意高精度向低精度转失真的风险。
本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。