首页后端开发其他后端知识Golang的interface怎么理解,用法是什么

Golang的interface怎么理解,用法是什么

时间2024-03-26 03:30:03发布访客分类其他后端知识浏览774
导读:今天就跟大家聊聊有关“Golang的interface怎么理解,用法是什么”的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 Golang中的int...
今天就跟大家聊聊有关“Golang的interface怎么理解,用法是什么”的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

   

Golang中的interface

先说说接口,接口我理解为一些行为的集合。似乎还是很懵x。来看看代码和允许效果,再说。

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
}

分别为他们实现了一个与结构体中同名的函数

func (w Worker) TypeCal() string {

    if w.Type == 0 {

        return w.Name +"是蓝翔毕业的员工"
    }
 else {

        return w.Name+"不是蓝翔毕业的员工"
    }

}

func (s Student) TypeCal() string  {

    return s.Name + "还在蓝翔学挖掘机炒菜"
}

分别创建worker和student的实例

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

student := Student{
Name:"小明"}

来来来,重点来了,把这两个实例放同一个TypeCalculator的切片中

workers := []TypeCalculator{
worker, student}

遍历这个切片,并调用切片中的函数打印结果

for _, v := range workers {

    fmt.Println(v.TypeCal())
}
    

简单分析

从结果上看,确实是不同的实例调用的是各自的函数,这个函数和interface中的函数名和返回值是相同的。那么加入要是某个实例没有实现interface中的函数呢?当把Student对应的函数注释掉,然后再运行程序,程序报错如下(用我的散装英语翻译就是,Student 没有实现TypeCalculator,TypeCal这个函数/方法找不到)

 Student does not implement TypeCalculator (missing TypeCal method)

以上就是关于Golang的interface怎么理解,用法是什么的介绍,本文内容仅供参考,有需要的朋友可以借鉴了解看看,希望对大家学习或工作,想要了解更多欢迎关注网络,小编每天都会为大家更新不同的知识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Golang的interface怎么理解,用法是什么
本文地址: https://pptw.com/jishu/653230.html
Golang中调用C++程序怎样做,操作是什么 PHP下怎样终止脚本执行,方法是什么?

游客 回复需填写必要信息