Junior
Колко байта заема съхранението на число?
sobes.tech AI
Отговор от AI
Размерът на съхранението на число в Go зависи от неговия тип.
| Тип данни | Размер (байтове) | Диапазон на стойностите |
|---|---|---|
int |
Зависи от архитектурата (32 или 64 бита) | Зависи от архитектурата |
uint |
Зависи от архитектурата (32 или 64 бита) | Зависи от архитектурата |
int8 |
1 | -128 до 127 |
uint8 |
1 | 0 до 255 |
int16 |
2 | -32768 до 32767 |
uint16 |
2 | 0 до 65535 |
int32 |
4 | -2147483648 до 2147483647 |
uint32 |
4 | 0 до 4294967295 |
int64 |
8 | -9223372036854775808 до 9223372036854775807 |
uint64 |
8 | 0 до 18446744073709551615 |
float32 |
4 | Около ±3.4e38 |
float64 |
8 | Около ±1.8e308 |
complex64 |
8 | Два стойности float32 (действителна и мнима част) |
complex128 |
16 | Два стойности float64 (действителна и мнима част) |
byte |
1 | Синоним за uint8 |
rune |
4 | Синоним за int32 (Unicode кодова точка) |
Пример за определяне на размера на тип на конкретна платформа:
import (
"fmt"
"unsafe"
)
func main() {
// Размерът на `int` и `uint` зависи от архитектурата на процесора
fmt.Printf("Размер на int: %d байта\n", unsafe.Sizeof(int(0)))
fmt.Printf("Размер на uint: %d байта\n", unsafe.Sizeof(uint(0)))
// Размерите на фиксираните типове са постоянни
fmt.Printf("Размер на int8: %d байта\n", unsafe.Sizeof(int8(0)))
fmt.Printf("Размер на float64: %d байта\n", unsafe.Sizeof(float64(0)))
}