Menu
Coddy logo textTech

Inicjalizacja struktur

Część sekcji Programowanie obiektowe ścieżki GO w Coddy. Lekcja 9 z 107.

Go oferuje kilka sposobów inicjalizacji struktur, z których każdy przydaje się w różnych sytuacjach.

Inicjalizacja nazwanych pól

type Person struct {
    Name string
    Age  int
    City string
}

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

Inicjalizacja pozycyjna (kolejność musi odpowiadać deklaracji pól)

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

Inicjalizacja wartościami zerowymi (wszystkie pola otrzymują wartości domyślne)

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

Częściowa inicjalizacja (nieustawione pola otrzymują wartości zerowe)

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

Wskaźnik do struktury przy użyciu &

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

Użycie var, a następnie przypisywanie pól

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

Inicjalizacja nazwanych pól to najczęściej stosowane i najbardziej czytelne podejście. Użyj &, gdy potrzebujesz wskaźnika do struktury.

challenge icon

Wyzwanie

Średni

Utwórz trzy obiekty Player, używając różnych metod inicjalizacji:

  • player1: Inicjalizacja z nazwanymi polami przy użyciu wartości wejściowych
  • player2: Inicjalizacja z nazwanymi polami: Name: "Guest", Class: "Novice", HitPoints: 50
  • player3: Użyj deklaracji var, a następnie przypisz każde pole indywidualnie

Spróbuj swoich sił

package main

import "fmt"

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

    // TODO: Utwórz player1, inicjalizując pola po nazwie wartościami wejściowymi

    // TODO: Utwórz player2, inicjalizując pola po nazwie:
    // Name: "Guest", Class: "Novice", HitPoints: 50

    // TODO: Utwórz player3 za pomocą deklaracji var, a następnie przypisz wartości polom:
    // 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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Go online