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

Was ist eine Schnittstelle in Golang?

藏色散人
藏色散人nach vorne
2021-06-18 15:37:141999Durchsuche

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
}

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 + "还在蓝翔学挖掘机炒菜"
}

Instanzen von Worker und Student erstellt

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

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

workers := []TypeCalculator{worker, student}

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())
}

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)

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:studygolang.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen