Junior
Quali sono i tipi di dati in Go?
sobes.tech AI
Risposta dell'AI
In Go ci sono quattro categorie di tipi di dati:
-
Tipi di base (Basic types) - predefiniti dal compilatore.
- Booleani:
bool - Numerici:
- Interi:
int,int8,int16,int32,int64,uint,uint8(byte),uint16,uint32,uint64,uintptr - a virgola mobile:
float32,float64 - Complessi:
complex64,complex128
- Interi:
- Stringhe:
string
- Booleani:
-
Tipi aggregati (Aggregate types) - collezioni di dimensione fissa.
- Array:
[n]T(dovenè la dimensione,Tè il tipo degli elementi) - Strutture:
struct {}(collezione di campi nominati di tipi diversi)
- Array:
-
Tipi di riferimento (Reference types) - tipi di riferimento, passati per riferimento, memorizzano un puntatore ai dati di base.
- Slice:
[]T(array dinamico, basato su un array) - Mappe:
map[K]V(collezione di coppie chiave-valore) - Puntatori:
*T(memorizzano l'indirizzo di una variabile) - Canali:
chan T,chan<- T,<-chan T(per sincronizzazione e comunicazione tra goroutine) - Funzioni:
func(...) (...)(il tipo è la firma della funzione)
- Slice:
-
Tipi di interfaccia (Interface types) - definiscono un insieme di firme di metodi implementate dai tipi di dati.
- Interfacce:
interface{}(interfaccia vuota),interface{ methodName(...) ... }
- Interfacce:
Esempi:
// Tipi di base
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"
// Tipi aggregati
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Array
type Person struct { // Struttura
Name string
Age int
}
var p Person = Person{Name: "Alice", Age: 25}
// Tipi di riferimento
var slice []int = []int{1, 2, 3} // Slice
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Mappa
var ptr *int = &age // Puntatore
var dataChan chan int = make(chan int) // Canale
var myFunc func(int) int = func(x int) int { return x * 2 } // Funzione
// Tipi di interfaccia
var i interface{} = "anything" // Interfaccia vuota
type Shape interface { // Interfaccia
Area() float64
}