Menu
Coddy logo textTech

Einführung in OOP in Go

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

Go hat keine Klassen, aber es ermöglicht objektorientierte Programmierung durch structs und methods. Ein struct gruppiert zusammengehörige Daten, und methods definieren Verhalten, das an diesen struct gebunden ist.

Definieren Sie ein Struct zum Speichern von Daten

type Dog struct {
    Name string
    Age  int
}

Füge dem Struct eine Methode hinzu

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

Erstellen Sie eine Instanz und verwenden Sie diese

package main

import "fmt"

type Dog struct {
    Name string
    Age  int
}

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

func main() {
    myDog := Dog{Name: "Buddy", Age: 3}
    fmt.Println(myDog.Bark()) // Ausgabe: Buddy says Woof!
    fmt.Println(myDog.Age)    // Ausgabe: 3
}

In Go wird der Teil (d Dog) vor dem Methodennamen als Receiver bezeichnet. Er verbindet die Methode mit dem Dog-Struct, ähnlich wie Methoden in anderen Sprachen zu Klassen gehören.

challenge icon

Aufgabe

Einfach

Erstellen Sie eine Cat-Struktur mit einer Methode, um den OOP-Ansatz von Go zu üben:

  • Definieren Sie eine Cat-Struktur mit den Feldern Name (string) und Age (int)
  • Fügen Sie eine Speak-Methode hinzu, die den Namen der Katze gefolgt von " says Meow!" zurückgibt

Spickzettel

Go realisiert objektorientierte Programmierung durch structs und Methoden. Ein struct gruppiert zusammengehörige Daten, und Methoden definieren das Verhalten, das mit diesem struct verknüpft ist.

Definieren Sie ein struct, um Daten zu speichern:

type Dog struct {
    Name string
    Age  int
}

Fügen Sie dem struct eine Methode mithilfe eines Receivers hinzu:

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

Der Teil (d Dog) vor dem Methodennamen ist der Receiver, der die Methode mit dem struct verbindet.

Erstellen Sie eine Instanz und verwenden Sie diese:

myDog := Dog{Name: "Buddy", Age: 3}
fmt.Println(myDog.Bark()) // Ausgabe: Buddy says Woof!
fmt.Println(myDog.Age)    // Ausgabe: 3

Probier es selbst

package main

import "fmt"

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

    cat := Cat{Name: name, Age: age}

    fmt.Printf("Name: %s\n", cat.Name)
    fmt.Printf("Age: %d\n", cat.Age)
    fmt.Println(cat.Speak())
}
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