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

Qu'est-ce que l'interface dans Golang

藏色散人
藏色散人avant
2021-06-18 15:37:141942parcourir

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
}

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

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

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

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

workers := []TypeCalculator{worker, student}

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

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

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)

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer