Menu
Coddy logo textTech

Inizializzazione degli struct

Fa parte della sezione Programmazione orientata agli oggetti del percorso GO di Coddy. Lezione 9 di 107.

Go offre diversi modi per inizializzare le struct, ciascuno utile in situazioni diverse.

Inizializzazione dei campi con nome

type Person struct {
    Name string
    Age  int
    City string
}

p1 := Person{
    Name: "Alice",
    Age:  25,
    City: "New York",
}

Inizializzazione posizionale (l’ordine deve corrispondere alla dichiarazione dei campi)

p2 := Person{"Bob", 30, "London"}

Inizializzazione con valori zero (tutti i campi ricevono i valori predefiniti)

p3 := Person{}
// Name: "", Age: 0, City: ""

Inizializzazione parziale (i campi non impostati ricevono valori zero)

p4 := Person{Name: "Charlie"}
// Name: "Charlie", Age: 0, City: ""

Puntatore a una struct usando &

p5 := &Person{
    Name: "Diana",
    Age:  28,
    City: "Paris",
}
fmt.Println(p5.Name) // Diana

Usare var e poi assegnare i campi

var p6 Person
p6.Name = "Eve"
p6.Age = 22

L'inizializzazione dei campi con nome è l'approccio più comune e leggibile. Usa & quando hai bisogno di un puntatore alla struct.

challenge icon

Sfida

Medio

Crea tre oggetti Player usando metodi di inizializzazione diversi:

  • player1: inizializzazione dei campi con nome usando i valori di input
  • player2: inizializzazione dei campi con nome con Name: "Guest", Class: "Novice", HitPoints: 50
  • player3: usa la dichiarazione var, poi assegna ogni campo individualmente

Provalo tu

package main

import "fmt"

func main() {
    var name, class string
    var hp int
    fmt.Scan(&name, &class, &hp)

    // TODO: Crea player1 usando l'inizializzazione dei campi per nome con i valori di input

    // TODO: Crea player2 usando l'inizializzazione dei campi per nome:
    // Name: "Guest", Class: "Novice", HitPoints: 50

    // TODO: Crea player3 usando una dichiarazione var, poi assegna i valori ai campi:
    // Name: "Hero", Class: "Knight", HitPoints: 200

    fmt.Printf("Player 1: %s (%s) - HP: %d\n", player1.Name, player1.Class, player1.HitPoints)
    fmt.Printf("Player 2: %s (%s) - HP: %d\n", player2.Name, player2.Class, player2.HitPoints)
    fmt.Printf("Player 3: %s (%s) - HP: %d\n", player3.Name, player3.Class, player3.HitPoints)
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Go online