uint16与int16的区别_golang int转string

uint16与int16的区别_golang int转stringGolang 中 uint int int8 int16 int32 int64 区别 在第一次学习 go 语言时 对 go 语言的各种 int 类型充满疑惑 为什么会有 int int8 int16 等等的类型呢 为什么不像 java 一样 只个 int 类型呢 直接上 demo test go package main import fmt unsafe func main

Golang中uint、int, int8, int16, int32, int64区别

在第一次学习go语言时,对go语言的各种int类型充满疑惑,为什么会有int、int8、int16等等的类型呢?为什么不像java一样,只个int类型呢?直接上demo

test.go

package main
import (
"fmt"
"unsafe"
)
func main() {

var i1 int = 1
var i2 int8 = 2
var i3 int16 = 3
var i4 int32 = 4
var i5 int64 = 5
fmt.Println(unsafe.Sizeof(i1))
fmt.Println(unsafe.Sizeof(i2))
fmt.Println(unsafe.Sizeof(i3))
fmt.Println(unsafe.Sizeof(i4))
fmt.Println(unsafe.Sizeof(i5))
}
// unsafe.Sizeof() 只返回数据类型的大小,不管引用数据的大小,单位为Byte

run result

[root@localhost tmp]# go run test.go 
8
1
2
4
8

通过运行结果可以看到:

  int类型的大小为 8 字节
int8类型大小为 1 字节
int16类型大小为 2 字节
int32类型大小为 4 字节
int64类型大小为 8 字节

通过上述可以看到,int和int64运行的结果一样。int64是有符号 64 位整型,而在64位操作系统中int的大小也是64位(8字节)。

直接看一下官方文档:
int is a signed integer type that is at least 32 bits in size. It is a distinct type, however, and not an alias for, say, int32.

翻译一下,就是说这个整形最少占32位,int和int32是两码事。

uint is a variable sized type, on your 64 bit computer uint is 64 bits wide.
uint和uint8等都属于无符号int类型
uint类型长度取决于 CPU,如果是32位CPU就是4个字节,如果是64位就是8个字节。

More
这里就会出现一个情况,int和uint是根据 CPU 变化的,如何知道当前系统的情况?

    CPU 型号:runtime.GOARCH
int的长度:strconv.IntSize

总结
go语言中的int的大小是和操作系统位数相关的,如果是32位操作系统,int类型的大小就是4字节。如果是64位操作系统,int类型的大小就是8个字节。

编程小号
上一篇 2025-02-17 07:21
下一篇 2025-08-10 08:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/136904.html