Go - Tipi di dati: Una guida amichevole per i principianti

Ciao lì, aspirante programmatore! Sei pronto ad immergerti nel meraviglioso mondo della programmazione in Go? Oggi esploreremo uno dei concetti fondamentali di Go: i tipi di dati. Non preoccuparti se non hai mai scritto una riga di codice prima – ti guiderò passo dopo passo, proprio come ho fatto per innumerevoli studenti durante gli anni di insegnamento. Iniziamo!

Go - Data Types

Cos'è un tipo di dati?

Prima di addentrarci nei dettagli, capiremo cos'è un tipo di dati. Immagina di organizzare una grande festa (divertente, vero?). Devi tenere traccia di diverse informazioni:

  • Il numero di ospiti (un numero intero)
  • Il costo del cibo per persona (un numero con decimali)
  • Se è una festa a sorpresa o no (sì o no)
  • Il nome dell'ospite d'onore (una serie di lettere)

In programmazione, utilizziamo diversi tipi di dati per rappresentare queste diverse tipologie di informazioni. Go, essendo il linguaggio pensante che è, ci fornisce diversi tipi di dati con cui lavorare.

Tipi interi

Iniziamo con i tipi interi. Questi sono utilizzati per numeri interi, come il numero di ospiti alla nostra festa.

Tipi interi di base

Go offre diversi tipi interi, che variano in dimensione e nella capacità di rappresentare numeri negativi:

Tipo Dimensione (bit) Intervallo
int8 8 -128 a 127
int16 16 -32,768 a 32,767
int32 32 -2,147,483,648 a 2,147,483,647
int64 64 -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807
uint8 8 0 a 255
uint16 16 0 a 65,535
uint32 32 0 a 4,294,967,295
uint64 64 0 a 18,446,744,073,709,551,615

Vediamo come possiamo utilizzarli nel nostro codice:

package main

import "fmt"

func main() {
var partyGuests int = 50
var smallPartyGuests int8 = 10
var hugePartyGuests uint64 = 1000000

fmt.Println("Ospiti alla festa regolare:", partyGuests)
fmt.Println("Ospiti alla piccola festa:", smallPartyGuests)
fmt.Println("Ospiti alla grande festa:", hugePartyGuests)
}

In questo esempio, stiamo dichiarando variabili per memorizzare il numero di ospiti per diversi tipi di feste. Il tipo int viene utilizzato per una festa regolare, int8 per una piccola riunione (poiché sappiamo che non supererà 127), e uint64 per una festività immensa (just in case stiamo pianificando un evento cittadino!).

I tipi 'int' e 'uint'

Go offre anche i tipi int e uint, che sono almeno di 32 bit ma possono essere più grandi a seconda del sistema. Sono spesso la scelta più conveniente quando non hai bisogno di una dimensione specifica.

var flexibleNumber int = 42
var positiveFlexibleNumber uint = 42

Qui, flexibleNumber può essere positivo o negativo, mentre positiveFlexibleNumber è sempre non negativo.

Tipi a virgola mobile

Ora parliamo dei numeri a virgola mobile. Questi sono utilizzati per numeri con decimali, come il costo per persona per il cibo della nostra festa.

Go offre due tipi a virgola mobile:

Tipo Dimensione (bit) Precisione
float32 32 Circa 7 cifre decimali
float64 64 Circa 15 cifre decimali

Vediamo come utilizzarli:

package main

import "fmt"

func main() {
var costPerPerson float32 = 15.50
var totalBudget float64 = 1000.75

fmt.Printf("Costo per persona: $%.2f\n", costPerPerson)
fmt.Printf("Budget totale: $%.2f\n", totalBudget)
}

In questo esempio, utilizziamo float32 per il costo per persona (poiché non abbiamo bisogno di una precisione estrema) e float64 per il budget totale (dove potremmo voler avere più cifre decimali per calcoli precisi).

Il %.2f nella funzione Printf indica a Go di visualizzare il float con due cifre decimali.

Altri tipi numerici

Go offre alcuni altri tipi numerici che sono utili in situazioni specifiche.

Numeri complessi

Sì, Go può gestire i numeri complessi! Offre due tipi:

Tipo Descrizione
complex64 Numeri complessi con float32 parte reale e immaginaria
complex128 Numeri complessi con float64 parte reale e immaginaria

Ecco un esempio rapido:

package main

import "fmt"

func main() {
var c64 complex64 = 1 + 2i
var c128 complex128 = 3 + 4i

fmt.Println("Complex64:", c64)
fmt.Println("Complex128:", c128)
}

Anche se potresti non utilizzare i numeri complessi spesso, è bello sapere che Go è al tuo fianco se mai ne avrai bisogno!

Byte e Rune

Go ha anche due alias per i tipi interi che vengono utilizzati in contesti specifici:

Tipo Alias per Uso comune
byte uint8 Rappresenta un byte di dati
rune int32 Rappresenta un punto Unicode

Ecco come potresti utilizzarli:

package main

import "fmt"

func main() {
var b byte = 65
var r rune = 'A'

fmt.Printf("Byte %d rappresenta: %c\n", b, b)
fmt.Printf("Rune %d rappresenta: %c\n", r, r)
}

In questo esempio, sia b che r rappresentano la lettera 'A', ma in modi diversi. Il byte utilizza il valore ASCII, mentre il rune utilizza il punto Unicode.

Conclusione

Uff! Abbiamo coperto molto oggi. Dalla interi ai float, e persino i numeri complessi, Go offre un ricco set di tipi di dati con cui lavorare. Ricorda, scegliere il tipo di dati giusto è come scegliere lo strumento giusto per un lavoro – può rendere il tuo codice più efficiente e prevenire errori.

Mentre continui il tuo viaggio in Go, diventerai sempre più a tuo agio con questi tipi e imparerai quando utilizzarli. Non preoccuparti se initially feels overwhelming – è del tutto normale! Come imparare a pedalare una bicicletta, richiede pratica, ma prima di sapere, sarai in grado di sfrecciare attraverso il codice Go come un professionista.

Continua a programmare, continua ad imparare, e, soprattutto, divertiti! Dopo tutto, la programmazione è un po' come pianificare la festa perfetta – si tratta di unire gli elementi giusti per creare qualcosa di straordinario. Buon divertimento con il coding!

Credits: Image by storyset