Junior
Quanti byte occupa la memorizzazione di un numero?
sobes.tech AI
Risposta dell'AI
La dimensione di memoria di un numero in Go dipende dal suo tipo.
| Tipo di dato | Dimensione (byte) | Intervallo di valori |
|---|---|---|
int |
Dipende dall'architettura (32 o 64 bit) | Dipende dall'architettura |
uint |
Dipende dall'architettura (32 o 64 bit) | Dipende dall'architettura |
int8 |
1 | -128 a 127 |
uint8 |
1 | 0 a 255 |
int16 |
2 | -32768 a 32767 |
uint16 |
2 | 0 a 65535 |
int32 |
4 | -2147483648 a 2147483647 |
uint32 |
4 | 0 a 4294967295 |
int64 |
8 | -9223372036854775808 a 9223372036854775807 |
uint64 |
8 | 0 a 18446744073709551615 |
float32 |
4 | Circa ±3.4e38 |
float64 |
8 | Circa ±1.8e308 |
complex64 |
8 | Due valori float32 (parte reale e immaginaria) |
complex128 |
16 | Due valori float64 (parte reale e immaginaria) |
byte |
1 | Sinonimo di uint8 |
rune |
4 | Sinonimo di int32 (punto di codice Unicode) |
Esempio di come determinare la dimensione di un tipo su una piattaforma specifica:
import (
"fmt"
"unsafe"
)
func main() {
// La dimensione di int e uint dipende dall'architettura del processore
fmt.Printf("Dimensione di int: %d byte\n", unsafe.Sizeof(int(0)))
fmt.Printf("Dimensione di uint: %d byte\n", unsafe.Sizeof(uint(0)))
// Le dimensioni dei tipi fissi sono costanti
fmt.Printf("Dimensione di int8: %d byte\n", unsafe.Sizeof(int8(0)))
fmt.Printf("Dimensione di float64: %d byte\n", unsafe.Sizeof(float64(0)))
}