Heim > Backend-Entwicklung > Golang > Wie kann Polymorphismus mit Settern in Go erreicht werden?

Wie kann Polymorphismus mit Settern in Go erreicht werden?

Linda Hamilton
Freigeben: 2024-12-10 10:41:10
Original
883 Leute haben es durchsucht

How Can Polymorphism Be Achieved with Setters in Go?

Polymorphismus in Go: Das Setter-Rätsel entschlüsseln

Im Bereich der objektorientierten Programmierung ermöglicht Polymorphismus die Behandlung von Objekten verschiedener Klassen als Instanzen eines gemeinsamen Supertyps. In Go stellt sich jedoch die Frage: Existiert Polymorphismus und wenn ja, wie manifestiert er sich?

Betrachten Sie den folgenden Go-Code, in dem versucht wird, eine Schnittstelle mit Getter- und Setter-Methoden zu erstellen:

type MyInterfacer interface {
    Get() int
    Set(i int)
}

type MyStruct struct {
    data int
}

func (this MyStruct) Get() int {
    return this.data
}

func (this MyStruct) Set(i int) {
    this.data = i
}
Nach dem Login kopieren

Die Setter-Methode stößt jedoch auf ein Problem: Der Empfänger dieser MyStruct ist kein Zeiger, was dazu führt, dass alle innerhalb der Methode vorgenommenen Änderungen verloren gehen, sobald sie beendet wird. Darüber hinaus würde die Festlegung des Empfängers auf *MyStruct die Kompilierung behindern.

Um dieses Problem zu beheben, verwendet eine korrigierte Version des Codes Zeiger:

type MyInterfacer interface {
    Get() int
    Set(i int)
}

type MyStruct struct {
    data int
}

func (this *MyStruct) Get() int {
    return this.data
}

func (this *MyStruct) Set(i int) {
    this.data = i
}
Nach dem Login kopieren

Durch die Einführung von Zeigern ermöglichen wir Änderungen innerhalb der Setter-Methode, um über ihren Gültigkeitsbereich hinaus bestehen zu bleiben. Obwohl diese Technik möglicherweise keinen strikten Polymorphismus im herkömmlichen Sinne darstellt, folgt sie den soliden Go-Praktiken und bietet eine praktikable Lösung für das ursprüngliche Problem.

Das obige ist der detaillierte Inhalt vonWie kann Polymorphismus mit Settern in Go erreicht werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage