Menu
Coddy logo textTech

Nullwerte & Standardwerte

Teil des Abschnitts Objektorientierte Programmierung der GO-Journey von Coddy. Lektion 17 von 107.

In Go hat jede Variable einen Nullwert: den Standardwert, der zugewiesen wird, wenn du eine Variable ohne explizite Initialisierung deklarierst. Das Verständnis von Nullwerten ist für die Arbeit mit Strukturen unerlässlich, da nicht initialisierte Felder automatisch diese Standardwerte erhalten.

Jeder Typ hat seinen eigenen Nullwert:

TypNullwert
int, float640
string"" (leere Zeichenkette)
boolfalse
pointer, slice, mapnil

Wenn du eine Struktur erstellst, erhält jedes Feld, das du nicht ausdrücklich festlegst, seinen Nullwert.

type User struct {
    Name   string
    Age    int
    Active bool
}

func main() {
    var u User
    fmt.Println(u.Name)   // "" (leerer String)
    fmt.Println(u.Age)    // 0
    fmt.Println(u.Active) // false
}

Dies gilt auch für die teilweise Initialisierung. Nur die Felder, die du angibst, erhalten benutzerdefinierte Werte.

u := User{Name: "Alice"}
fmt.Println(u.Age)    // 0
fmt.Println(u.Active) // false

Nullwerte machen Strukturen sofort ohne explizite Initialisierung nutzbar. Sei jedoch vorsichtig mit Referenztypen wie Slices und Maps. Ihr Nullwert ist nil, was zu Laufzeit-Panics führen kann, wenn du versuchst, sie ohne Initialisierung zu verwenden.

challenge icon

Aufgabe

Einfach

Lass uns ein Spielersystem erstellen, das zeigt, wie Nullwerte in Go funktionieren. Du wirst ein Spielprofil erstellen, bei dem einige Felder ausdrücklich gesetzt werden, während andere auf ihren standardmäßigen Nullwerten beruhen.

Du wirst deinen Code auf zwei Dateien verteilen:

  • player.go: Definiere eine Player-Struktur mit den folgenden Feldern: Username (string), Level (int), Score (int), IsPremium (bool) und GuildName (string). Erstelle außerdem eine DisplayProfile-Methode, die eine formatierte Zeichenkette zurückgibt, in der alle Informationen des Spielers angezeigt werden.
  • main.go: Lies einen Benutzernamen aus der Eingabe ein und erstelle einen Player mit nur teilweiser Initialisierung: Setze lediglich das Feld Username. Zeige anschließend das vollständige Profil an, um zu sehen, wie Go die nicht gesetzten Felder mit ihren Nullwerten füllt.

Die folgende Eingabe wird bereitgestellt:

  • Zeile 1: Der Benutzername des Spielers

Deine DisplayProfile-Methode sollte eine Zeichenkette in genau diesem Format zurückgeben:

Username: [Username]
Level: [Level]
Score: [Score]
Premium: [IsPremium]
Guild: [GuildName]

Wenn der Benutzername beispielsweise ShadowKnight lautet, sollte deine Ausgabe den Benutzernamen zusammen mit allen Nullwerten für die nicht initialisierten Felder anzeigen:

Username: ShadowKnight
Level: 0
Score: 0
Premium: false
Guild: 

Beachte, dass das Feld Guild nach dem Doppelpunkt nichts anzeigt: Das ist der Nullwert der leeren Zeichenkette. Diese Aufgabe hilft dir, genau zu erkennen, welchen Wert Go jedem Typ zuweist, wenn du keinen ausdrücklichen Wert angibst.

Probier es selbst

package main

import (
	"fmt"
)

func main() {
	// Benutzernamen von der Eingabe lesen
	var username string
	fmt.Scanln(&username)

	// TODO: Erstelle einen Player mit partieller Initialisierung
	// Setze nur das Username-Feld, lass die anderen Felder Nullwerte verwenden

	// TODO: Zeige das Profil des Spielers mit der DisplayProfile-Methode an
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Go-Compiler