Heim > Backend-Entwicklung > Golang > Was ist eine Schnittstelle in Golang?

Was ist eine Schnittstelle in Golang?

藏色散人
Freigeben: 2021-06-18 15:37:14
nach vorne
2002 Leute haben es durchsucht

Die folgende Tutorial-Kolumne von golang stellt Ihnen die Benutzeroberfläche in Golang vor. Ich hoffe, dass sie Freunden, die sie benötigen, hilfreich sein wird!

Schnittstelle in Golang

Lassen Sie uns zuerst über die Schnittstelle sprechen. Ich verstehe die Schnittstelle als eine Sammlung von Verhaltensweisen. Scheint immer noch verwirrt zu sein. Werfen wir dann einen Blick auf den Code und die zulässigen Effekte.

package main
import "fmt"
type TypeCalculator interface {
    TypeCal() string
}
type Worker struct {
    Type int
    Name string
}
type Student struct {
    Name string
}
func (w Worker) TypeCal() string {
    if w.Type == 0 {
        return w.Name +"是蓝翔毕业的员工"
    } else {
        return w.Name+"不是蓝翔毕业的员工"
    }
}
func (s Student) TypeCal() string  {
    return s.Name + "还在蓝翔学挖掘机炒菜"
}
func main() {
    worker := Worker{Type:0, Name:"小华"}
    student := Student{Name:"小明"}
    workers := []TypeCalculator{worker, student}
    for _, v := range workers {
        fmt.Println(v.TypeCal())
    }
}
//运行效果
//小华是蓝翔毕业的员工
//小明还在蓝翔学挖掘机炒菜
开始解(xia)释(bai)
首先我们写了一个interface,里面有个待实现的方法TypeCal()
type TypeCalculator interface {
    TypeCal() string
}
又写了两个结构体Worker和Student
type Worker struct {
    Type int
    Name string
}
type Student struct {
    Name string
}
Nach dem Login kopieren

eine Funktion mit dem gleichen Namen in der Struktur für sie implementiert

func (w Worker) TypeCal() string {
    if w.Type == 0 {
        return w.Name +"是蓝翔毕业的员工"
    } else {
        return w.Name+"不是蓝翔毕业的员工"
    }
}
func (s Student) TypeCal() string  {
    return s.Name + "还在蓝翔学挖掘机炒菜"
}
Nach dem Login kopieren

Instanzen von Worker und Student erstellt

worker := Worker{Type:0, Name:"小华"}
student := Student{Name:"小明"}
Nach dem Login kopieren

Komm schon, hier kommt der Punkt, füge diese beiden Instanzen in das gleiche Segment von TypeCalculator ein

workers := []TypeCalculator{worker, student}
Nach dem Login kopieren

Durchlaufen Sie dieses Slice und rufen Sie die Funktion im Slice auf, um das Ergebnis zu drucken

for _, v := range workers {
    fmt.Println(v.TypeCal())
}
Nach dem Login kopieren

Einfache Analyse

Aus den Ergebnissen geht hervor, dass verschiedene Instanzen ihre eigenen Funktionen aufrufen dasselbe von. Was passiert also, wenn eine bestimmte Instanz die Funktionen in der Schnittstelle nicht implementiert? Wenn ich die Student entsprechende Funktion auskommentiere und dann das Programm ausführe, meldet das Programm den folgenden Fehler (anhand meiner losen englischen Übersetzung implementiert Student TypeCalculator nicht und die Funktion/Methode TypeCal kann nicht gefunden werden)

 Student does not implement TypeCalculator (missing TypeCal method)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist eine Schnittstelle in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:studygolang.com
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