Golang中uint、int, int8, int16, int32, int64區別

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個字節。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章