Maison > développement back-end > Golang > Qu'est-ce que l'interface dans Golang

Qu'est-ce que l'interface dans Golang

藏色散人
Libérer: 2021-06-18 15:37:14
avant
2040 Les gens l'ont consulté

Ce qui suit est l'interface de Golang présentée par la colonne du didacticiel golang. J'espère qu'elle sera utile aux amis dans le besoin !

Interface en Golang

Parlons d'abord de l'interface. Je comprends l'interface comme un ensemble de comportements. Cela semble toujours confus. Jetons ensuite un coup d'œil au code et aux effets autorisés.

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
}
Copier après la connexion

a implémenté une fonction du même nom dans la structure pour eux respectivement

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

a créé des instances de travailleur et d'étudiant respectivement

worker := Worker{Type:0, Name:"小华"}
student := Student{Name:"小明"}
Copier après la connexion

Allez, voici le point, mettez Ces deux instances sont placées dans la même tranche de TypeCalculator

workers := []TypeCalculator{worker, student}
Copier après la connexion

Parcourez la tranche et appelez la fonction dans la tranche pour imprimer le résultat

for _, v := range workers {
    fmt.Println(v.TypeCal())
}
Copier après la connexion

Analyse simple

A partir des résultats , Il est vrai que différentes instances appellent leurs propres fonctions. Le nom de la fonction et la valeur de retour de cette fonction et de l'interface sont les mêmes. Et si une certaine instance n’implémente pas les fonctions de l’interface ? Lorsque je commente la fonction correspondant à Student et que j'exécute ensuite le programme, le programme signale l'erreur suivante (en utilisant ma traduction anglaise libre, Student n'implémente pas TypeCalculator et la fonction/méthode TypeCal est introuvable)

 Student does not implement TypeCalculator (missing TypeCal method)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:studygolang.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal