So implementieren Sie Schnittstellen in der Go-Sprache

PHPz
Freigeben: 2023-04-05 13:53:06
Original
3140 Leute haben es durchsucht

Go-Sprache (auch Golang genannt) ist eine von Google entwickelte Open-Source-Programmiersprache. Sie zeichnet sich durch Effizienz, Zuverlässigkeit und Einfachheit aus. Ein wichtiges Merkmal der Go-Sprache ist die „Schnittstelle“. Eine Schnittstelle ist eine Sammlung von Methodensignaturen und ein abstrakter Typ. In diesem Artikel wird erläutert, wie Schnittstellen in der Go-Sprache implementiert werden.

1. Definition der Schnittstelle

In der Go-Sprache verwendet die Definition der Schnittstelle das Schlüsselwort „Schnittstelle“ und das Syntaxformat ist wie folgt:

type 接口名 interface{
    方法名1(参数列表1) 返回值列表1
    方法名2(参数列表2) 返回值列表2
    ……
}
Nach dem Login kopieren

Unter diesen folgt die Benennung des Schnittstellennamens und des Methodennamens der Namenskonvention der Go-Sprache. Methodennamen werden in Kamel-Schreibweise benannt. Der erste Buchstabe des Methodennamens wird großgeschrieben, um anzuzeigen, dass er für die Außenwelt sichtbar ist. In einer Schnittstelle wird der Methodenname zusammen mit der Parameterliste und der Rückgabewertliste als „Methodensignatur“ bezeichnet.

2. Implementierung der Schnittstelle

Schnittstellenimplementierung bezieht sich auf den Methodencodeblock, der die Schnittstelle basierend auf der von der Schnittstelle definierten Methodensignatur implementiert. Eine Methode, die eine Schnittstelle implementiert, erfordert eine Methodensignatur, die die Anforderungen der Schnittstelle erfüllt. Diese Methode wird als „Schnittstellenmethode“ bezeichnet.

Die Implementierung der Schnittstelle erfordert die Verwendung des einzigartigen Typkonvertierungsmechanismus der Go-Sprache. Insbesondere muss die Schnittstellenimplementierung den Implementierungstyp (den Typ, der die Schnittstellenmethode implementiert) in den Schnittstellentyp (den Typ, der die Schnittstelle implementiert) konvertieren, indem sie die „Schnittstellenmethode“ implementiert. Bei der Typkonvertierung muss der Implementierungstyp alle von der Schnittstelle definierten Methodensignaturen implementieren; jede Schnittstelle kann die Schnittstelle implementieren, solange alle Methoden implementiert sind.

Zum Beispiel definieren wir eine „Tier“-Schnittstelle und zwei Strukturen von „Hund“ und „Katze“ und implementieren die diesen beiden Strukturen entsprechenden „Schnittstellenmethoden“. Der Code lautet wie folgt:

type Animal interface {
    Speak() string
}

type Dog struct {
}

func (d Dog) Speak() string {
    return "汪汪汪"
}

type Cat struct {
}

func (c Cat) Speak() string {
    return "喵喵喵"
}

func main() {
    var animal Animal //定义一个Animal类型变量
    animal = Dog{}     //将Dog类型的结构体转换为Animal类型的接口实现
    fmt.Println(animal.Speak())

    animal = Cat{}     //将Cat类型的结构体转换为Animal类型的接口实现
    fmt.Println(animal.Speak())
}
Nach dem Login kopieren

Im obigen Code definieren wir eine „Tier“-Schnittstelle, die gleichzeitig die „Speak“-Schnittstellenmethode enthält, wir definieren zwei Typen, nämlich „Hund“ und „Katze“. und implementieren Sie ihre entsprechenden „Speak“-Schnittstellenmethoden. In der Hauptfunktion implementieren wir den Aufruf der Methode „Speak“, indem wir die Variablen vom Typ „Dog“ und „Cat“ in die Schnittstellenimplementierung vom Typ „Animal“ konvertieren.

3. Implementierung mehrerer Schnittstellen

In der Go-Sprache kann eine Struktur mehrere Schnittstellen implementieren, und eine Schnittstelle kann durch mehrere Strukturen gleichzeitig implementiert werden. In diesem Fall müssen wir eine Kombination verwenden, um mehrere Schnittstellen zu implementieren.

Zum Beispiel definieren wir eine „Tier“-Schnittstelle und eine „Haustier“-Schnittstelle und implementieren die „Tier“- und „Haustier“-Schnittstellen jeweils in der „Hund“-Struktur. Der Code lautet wie folgt:

type Animal interface {
    Speak() string
}

type Pet interface {
    Name() string
}

type Dog struct {
    name string
}

func (d Dog) Speak() string {
    return "汪汪汪"
}

func (d Dog) Name() string {
    return d.name
}

func main() {
    var animal Animal //定义一个Animal类型变量
    animal = Dog{name: "小明"} //将Dog类型的结构体转换为Animal类型的接口实现
    fmt.Println(animal.Speak())

    var pet Pet       //定义一个Pet类型变量
    pet = Dog{name: "小花"}   //将Dog类型的结构体转换为Pet类型的接口实现
    fmt.Println(pet.Name())
}
Nach dem Login kopieren

Im obigen Code haben wir eine „Tier“-Schnittstelle und eine „Haustier“-Schnittstelle definiert und die Schnittstellenmethoden implementiert, die der „Hund“-Struktur entsprechen. In der Hauptfunktion konvertieren wir die Struktur „Hund“ in die Schnittstellenimplementierung „Tier“ bzw. die Schnittstellenimplementierung „Haustier“ und realisieren so den Aufruf der Methoden „Speak“ und „Name“.

4. Zusammenfassung

Die Schnittstelle in der Go-Sprache ist eine wichtige Funktion, die Polymorphismus erreichen und uns helfen kann, die Idee der schnittstellenorientierten Programmierung zu verwirklichen. In der Go-Sprache sind die Definition und Implementierung von Schnittstellen sehr einfach, Sie müssen jedoch den Typkonvertierungsmechanismus der Go-Sprache beherrschen. In diesem Artikel werden Schnittstellen und Schnittstellenimplementierungen in der Go-Sprache kurz vorgestellt und die Situation mehrerer Schnittstellen anhand von Beispielen erläutert.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Schnittstellen in der Go-Sprache. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage