Tipi di dati Go
Di seguito sono elencati tutti i tipi incorporati nel linguaggio Go, per riferimento. Per maggiori dettagli è possibile visitare Manuale di riferimento - Tipi.
Tipo booleano
Il tipo booleano ha solo valori veri e falsi.
| Tipo | Descrizione |
|---|---|
bool | true per il valore vero, false per il valore falso |
TIP
In Go, l'intero 0 non rappresenta il valore falso e gli interi diversi da zero non rappresentano il valore vero, ovvero i numeri non possono sostituire i valori booleani per le valutazioni logiche. I due sono tipi completamente diversi.
Tipi interi
Go assegna tipi diversi per interi di bit diversi, principalmente divisi in interi senza segno e interi con segno.
| Numero | Tipo e descrizione |
|---|---|
uint8 | Intero senza segno a 8 bit |
uint16 | Intero senza segno a 16 bit |
uint32 | Intero senza segno a 32 bit |
uint64 | Intero senza segno a 64 bit |
int8 | Intero con segno a 8 bit |
int16 | Intero con segno a 16 bit |
int32 | Intero con segno a 32 bit |
int64 | Intero con segno a 64 bit |
uint | Intero senza segno almeno 32 bit |
int | Intero almeno 32 bit |
uintptr | Equivalente a un intero senza segno a 64 bit, ma specializzato per operazioni con puntatori, utilizzato per memorizzare indirizzi di puntatori non elaborati. |
Tipo floating-point
Numeri floating-point IEEE-754, principalmente divisi in floating-point a singola precisione e floating-point a doppia precisione.
| Tipo | Descrizione |
|---|---|
float32 | Floating-point IEEE-754 a 32 bit |
float64 | Floating-point IEEE-754 a 64 bit |
Tipi complessi
| Tipo | Descrizione |
|---|---|
complex128 | Reale e immaginario a 64 bit |
complex64 | Reale e immaginario a 32 bit |
Tipi di carattere
Le stringhe del linguaggio Go sono completamente compatibili con UTF-8
| Tipo | Descrizione |
|---|---|
byte | Equivalente a uint8 può esprimere caratteri ANSCII |
rune | Equivalente a int32 può esprimere caratteri Unicode |
string | Le stringhe sono sequenze di byte, possono essere convertite nel tipo []byte ovvero slice di byte |
Tipi derivati
| Tipo | Esempio |
|---|---|
| Array | [5]int, array di interi di lunghezza 5 |
| Slice | []float64, slice di floating-point a 64 bit |
| Mappa | map[string]int, mappa con chiavi di tipo stringa e valori di tipo intero |
| Struttura | type Gopher struct{}, struttura Gopher |
| Puntatore | *int, un puntatore a intero. |
| Funzione | type f func(), un tipo di funzione senza parametri e senza valore di ritorno |
| Interfaccia | type Gopher interface{}, interfaccia Gopher |
| Canale | chan int, canale di interi |
Valore zero
Nella documentazione ufficiale il valore zero è chiamato zero value. Il valore zero non è semplicemente lo zero numerico, ma piuttosto un valore vuoto o un valore predefinito di un tipo è più accurato.
| Tipo | Valore zero |
|---|---|
| Tipi numerici | 0 |
| Tipo booleano | false |
| Tipo stringa | "" |
| Array | Insieme di valori zero del tipo corrispondente di lunghezza fissa |
| Struttura | Struttura i cui campi interni sono tutti valori zero |
| Slice, mappe, funzioni, interfacce, canali, puntatori | nil |
nil
nil è simile a none o null in altri linguaggi, ma non è equivalente. nil è solo il valore zero di alcuni tipi di riferimento e non appartiene a nessun tipo. Dal codice sorgente si può vedere che nil è solo una variabile.
var nil TypeE istruzioni come nil == nil non possono superare la compilazione.
