Sobes.tech
Junior

Quali sono le principali strutture dati in Go?

sobes.tech AI

Risposta dell'AI

In Go, esistono le seguenti strutture di dati principali (primitive) e composte (composite):

Primitive:

  • Booleani (bool)
  • Tipi numerici:
    • Numeri interi (int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr)
    • Numeri a virgola mobile (float32, float64)
    • Numeri complessi (complex64, complex128)
    • Byte (byte - alias di uint8)
    • Rune (rune - alias di int32, rappresenta un carattere Unicode)
  • Stringhe (string)

Composti:

  • Array (array)
    • Dimensione fissa.
    var arr [5]int // array di 5 interi
    
  • Slice (slice)
    • Dimensione dinamica, basata su array.
    var s []int // slice non inizializzato
    s = make([]int, 5, 10) // slice di lunghezza 5 e capacità 10
    
  • Mappe (map)
    • Collezione non ordinata di coppie chiave-valore.
    m := make(map[string]int) // mappa con chiavi stringa e valori int
    
  • Struct (struct)
    • Collezione tipizzata di campi.
    type Person struct {
        Name string
        Age  int
    }
    
  • Puntatori (pointer)
    • Contengono l'indirizzo di una cella di memoria.
    var x int = 10
    var p *int = &x // p punta a x
    
  • Funzioni (func)
    • In Go, le funzioni sono tipi di prima classe.
    type MyFunc func(int) string // tipo funzione
    
  • Canali (channel)
    • Usati per sincronizzazione e scambio di dati tra goroutine.
    ch := make(chan int) // canale senza buffer per int
    
  • Interfacce (interface)
    • Rappresentano un insieme di metodi che un tipo deve implementare.
    type Reader interface {
        Read(p []byte) (n int, err error)
    }
    

È anche importante menzionare altri tipi compositi importanti, come:

  • Slice di byte ([]byte)
  • Slice di rune ([]rune)

Queste strutture dati forniscono flessibilità e prestazioni per un'ampia gamma di compiti in Go.