Strukturmanipulation in Go

GolangGolangBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Dieses Labor zielt darauf ab, Ihre Kenntnisse über Go-Structs zu testen, die gruppierte Felder sind. Structs eignen sich gut, um Daten zusammenzufassen und damit Aufzeichnungen zu bilden.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/DataTypesandStructuresGroup(["Data Types and Structures"]) go/DataTypesandStructuresGroup -.-> go/structs("Structs") subgraph Lab Skills go/structs -.-> lab-15515{{"Strukturmanipulation in Go"}} end

Structs

In diesem Labor müssen Sie die Funktion newPerson vervollständigen, die eine neue Person-Struktur mit dem angegebenen Namen konstruiert. Der person-Strukturtyp hat die Felder name und age.

  • Der person-Strukturtyp muss die Felder name und age haben.
  • Die Funktion newPerson muss eine neue Person-Struktur mit dem angegebenen Namen konstruieren.
  • Die Funktion newPerson muss einen Zeiger auf die neu erstellte Person-Struktur zurückgeben.
  • Die main-Funktion muss folgende ausgeben:
    • Eine neue Struktur mit Namen "Bob" und Alter 20.
    • Eine neue Struktur mit Namen "Alice" und Alter 30.
    • Eine neue Struktur mit Namen "Fred" und Alter 0.
    • Einen Zeiger auf eine neue Struktur mit Namen "Ann" und Alter 40.
    • Eine neue Struktur, die mit der newPerson-Funktion konstruiert wurde, mit Namen "Jon" und Alter 42.
    • Das name-Feld einer Struktur mit Namen "Sean" und Alter 50.
    • Das age-Feld eines Zeigers auf eine Struktur mit Namen "Sean" und Alter 50.
    • Das age-Feld eines Zeigers auf eine Struktur mit Namen "Sean" und Alter 50, nachdem das age-Feld auf 51 aktualisiert wurde.
$ go run structs.go
{Bob 20}
{Alice 30}
{Fred 0}
&{Ann 40}
&{Jon 42}
Sean
50
51

Hier ist der vollständige Code:

// Go's _structs_ sind gruppierte Felder.
// Sie eignen sich gut, um Daten zusammenzufassen und damit
// Aufzeichnungen zu bilden.

package main

import "fmt"

// Dieser `person`-Strukturtyp hat die Felder `name` und `age`.
type person struct {
	name string
	age  int
}

// `newPerson` konstruiert eine neue Person-Struktur mit dem angegebenen Namen.
func newPerson(name string) *person {
	// Sie können sicher einen Zeiger auf eine lokale Variable zurückgeben,
	// da eine lokale Variable über den Gültigkeitsbereich der Funktion hinausleben wird.
	p := person{name: name}
	p.age = 42
	return &p
}

func main() {

	// Diese Syntax erstellt eine neue Struktur.
	fmt.Println(person{"Bob", 20})

	// Sie können die Felder beim Initialisieren einer Struktur benennen.
	fmt.Println(person{name: "Alice", age: 30})

	// Ausgelassene Felder werden mit dem Nullwert initialisiert.
	fmt.Println(person{name: "Fred"})

	// Ein `&`-Prefix liefert einen Zeiger auf die Struktur.
	fmt.Println(&person{name: "Ann", age: 40})

	// Es ist üblich, die Erstellung neuer Strukturen in Konstruktorfunktionen zu kapseln
	fmt.Println(newPerson("Jon"))

	// Zugriff auf Strukturfelder mit einem Punkt.
	s := person{name: "Sean", age: 50}
	fmt.Println(s.name)

	// Sie können auch Punkte mit Strukturzeigern verwenden - die
	// Zeiger werden automatisch aufgelöst.
	sp := &s
	fmt.Println(sp.age)

	// Strukturen sind veränderbar.
	sp.age = 51
	fmt.Println(sp.age)
}

Zusammenfassung

In diesem Labor haben Sie gelernt, wie Sie Go-Structs verwenden, um Daten zusammenzufassen und damit Aufzeichnungen zu bilden. Sie haben auch gelernt, wie Sie neue Strukturen erstellen, auf Strukturfelder zugreifen und Strukturfelder aktualisieren.