关于golang:Golang中int-int8-int16-int32-int64和uint区别

26次阅读

共计 1037 个字符,预计需要花费 3 分钟才能阅读完成。

前言

在学习 go 语言时,做算法题会很常常遇到 go 语言的各种 int 类型,为什么会有 int、int8、int16 等等的类型呢?为什么不像 java 一样,只个 int 类型呢?

测试

unsafe.Sizeof() 只返回数据类型的大小,不论援用数据的大小,单位为 Byte

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    var a int = 1
    var b int8 = 2
    var c int16 = 3
    var d int32 = 4
    var e int64 = 5
    fmt.Println(unsafe.Sizeof(a))
    fmt.Println(unsafe.Sizeof(b))
    fmt.Println(unsafe.Sizeof(c))
    fmt.Println(unsafe.Sizeof(d))
    fmt.Println(unsafe.Sizeof(e))
}

后果

F:\go\bin\go.exe build -o C:\Users\wang3\AppData\Local\Temp\GoLand\___go_build_test_go.exe G:\Gospace\leetcode\test.go #gosetup
C:\Users\wang3\AppData\Local\Temp\GoLand\___go_build_test_go.exe
8
1
2
4
8

论断

  • int 类型的大小为 8 字节
  • int8 类型大小为 1 字节
  • int16 类型大小为 2 字节
  • int32 类型大小为 4 字节
  • int64 类型大小为 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.
意思是 int 是一个至多 32 位的有符号整数类型。然而,它是一个不同的类型,而不是 int32 的别名。int 和 int32 是两码事。
uint is a variable sized type, on your 64 bit computer uint is 64 bits wide.
uint 是一种可变大小的类型,在 64 位计算机上,uint 是 64 位宽的。uint 和 uint8 等都属于无符号 int 类型。uint 类型长度取决于 CPU,如果是 32 位 CPU 就是 4 个字节,如果是 64 位就是 8 个字节。

总结

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

正文完
 0