你是否曾经在编程中遇到过这样的尴尬:明明数字很小,却用了很大的内存空间;或者数字很大,结果溢出变成了完全错误的值?
这就是不理解数值类型带来的后果。在Go语言中,数值类型分为整数、浮点数和复数三大类,每一类都有其特定的使用场景和特点。
理解这些类型,能让你写出更高效、更可靠的代码。下面就让我们一起深入探索Go语言中的数值类型吧!
1. 整数类型:不只是正负之分
Go语言的整型家族相当庞大,分为有符号和无符号两大类,每种类型都有明确的位数和范围。
有符号整数
有符号整数可以存储正数和负数,包括int8、int16、int32、int64和int。
下面是一个简单示例:
package main
import (
"fmt"
"math"
"unsafe"
)
func main() {
var num8 int8 = 127
var num16 int16 = 32767
var num32 int32 = math.MaxInt32
var num64 int64 = math.MaxInt64
var num int = math.MaxInt
fmt.Printf("num8的类型是 %T, 大小 %d 字节, 值是 %d\n",
num8, unsafe.Sizeof(num8), num8)
fmt.Printf("num16的类型是 %T, 大小 %d 字节, 值是 %d\n",
num16, unsafe.Sizeof(num16), num16)
fmt.Printf("num32的类型是 %T, 大小 %d 字节, 值是 %d\n",
num32, unsafe.Sizeof(num32), num32)
fmt.Printf("num64的类型是 %T, 大小 %d 字节, 值是 %d\n",
num64, unsafe.Sizeof(num64), num64)
fmt.Printf("num的类型是 %T, 大小 %d 字节, 值是 %d\n",
num, unsafe.Sizeof(num), num)
}
输出结果会显示每种类型的大小和最大值,让你直观了解它们的区别。
无符号整数
无符号整数只能存储非负数,包括uint8、uint16、uint32、uint64和uint。
func main() {
var num8 uint8 = 255
var num16 uint16 = 65535
var num32 uint32 = math.MaxUint32
var num64 uint64 = math.MaxUint64
var num uint = math.MaxUint
fmt.Printf("num8的类型是 %T, 大小 %d 字节, 值是 %d\n",
num8, unsafe.Sizeof(num8), num8)
fmt.Printf("num16的类型是 %T, 大小 %d 字节, 值是 %d\n",
num16, unsafe.Sizeof(num16), num16)

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



