Go语言--语法基础4--基本数据类型--整数类型

整型是所有编程语言里最基础的数据类型。 Go 语言支持如下所示的这些整型类型。

需要注意的是, int 和 int32 在 Go 语言里被认为是两种不同的类型,编译器也不会帮你自动做类型转换,
比如以下的例子会有编译错误:
var value2 int32
value1 := 64 // value1 将会被自动推导为 int 类型
value2 = value1 // 编译错误
编译错误类似于:
cannot use value1 (type int) as type int32 in assignment 。
使用强制类型转换可以解决这个编译错误:
value2 = int32(value1) // 编译通过
当然,开发者在做强制类型转换时,需要注意数据长度被截短而发生的数据精度损失
(比如将浮点数强制转为整数)和值溢出(值超过转换的目标类型的值范围 时)问题。
整型的使用细节:
( 1 ) golang 整数类型分为:有符号和无符号, int 和 uint 的大小和系统有关;
( 2 ) golang 整型默认申明为 int ;
( 3 ) fmt.Printf("num 的数据类型是 %T ,占的字节数是 %d", num,unsafe.Sizeof(num))
( 4 ) golang 使用整数类型时,遵从保小不保大原则,即在保证程序正常运行的
情况下, 尽量使用占用空间小的数据类型;
( 5 ) bit :计算机中最小的存储单位, byte :计算机中基本的存储单元;
计算类型的大小 :

复制代码
package main
import (
"fmt" 
"unsafe"
)
func main() {
var a int ;
fmt.Printf("%T unsafe = %d\n",a,unsafe.Sizeof(a))
}

Go 语言中 unsafe.Sizeof() 函数:
1 、对不同长度的字符串, unsafe.Sizeof() 函数的返回值都为 16 ,这是因为string 类型对应一个结构体,该结构体有两个域,第一个域指向该字符串的指针,第二个域为字符串的长度,每个域占 8 个字节,但是并不包含指针指向的字符串的内容,这就解释了unsafe.Sizeof() 函数对 string 类型的返回值始终是 16 。
2 、对不同长度的数组, unsafe.Sizeof() 函数的返回值随着数组中的元素个数的增加而增加, 这是因为unsafe.Sizeof() 函数总是在编译期就进行求值,而不是在运行时,这就意味着,unsafe.Sizeof() 函数的返回值可以赋值给常量,在编译期求值,意味着可以获得数组所占的内存大小,因为数组总是在编译期就指明自己的容量,并且在以后都是 不可变的。
3 、对所含元素个数不同的切片, unsafe.Sizeof() 函数的返回值都为 24 ,这是因为对切片来说,
unsafe.Sizeof() 函数返回的值对应的是切片的描述符,而不是切片所指向的内存的大小, 因此都是24。

相关推荐
MY_TEUCK1 小时前
【Java 后端】SpringBoot 登录认证与会话跟踪实战(JWT + Filter/Interceptor)
java·开发语言·spring boot
QQ2422199791 小时前
基于python+微信小程序的家教管理系统_mh3j9
开发语言·python·微信小程序
沐知全栈开发2 小时前
JavaScript 条件语句
开发语言
RSTJ_16252 小时前
PYTHON+AI LLM DAY THREETY-SEVEN
开发语言·人工智能·python
清水白石0082 小时前
《Python性能深潜:从对象分配开销到“小对象风暴”的破解之道(含实战与最佳实践)》
开发语言·python
Je1lyfish2 小时前
CMU15-445 (2025 Fall/2026 Spring) Project#3 - QueryExecution
linux·c语言·开发语言·数据结构·数据库·c++·算法
Brilliantwxx2 小时前
【C++】 vector(代码实现+坑点讲解)
开发语言·c++·笔记·算法
野生技术架构师2 小时前
2026年最全Java面试题及答案汇总(建议收藏,面试前看这篇就够了)
java·开发语言·面试
程序员飞哥2 小时前
重构 AI 思维(一):Prompt Engineering,如何下达不可违抗的指令?
人工智能·后端
百锦再3 小时前
Auto.js变成基础知识学习
开发语言·javascript·学习·sqlite·kotlin·android studio·数据库开发