GO语言基础教程(21)Go基础类型之数值类型:Go语言数值类型:别让你的整数溢出!

你是否曾经在编程中遇到过这样的尴尬:明明数字很小,却用了很大的内存空间;或者数字很大,结果溢出变成了完全错误的值?

这就是不理解数值类型带来的后果。在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)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值