11-Go语言基础-接口(interface)

简介

Go语言中函数和方法的区别:
函数是基本的代码块,用于执行一个任务。 Go 语言最少有个 main() 函数。
方法就是一个包含了接收者的函数。接收者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。

接口:
Go语言的接口是隐式实现的。
interface是方法声明的集合。
任何类型的对象实现了interface接口中声明的全部方法,则算实现了该接口。
interface可以作为一种数据类型,实现了该接口的任意类型的对象都可以给该接口类型的变量赋值。

接口只是一种约束条件,我们不需要显式的调用。某个类型实现了它约束的方法,就说明它已经实现了该接口,他就可以当做该接口使用了。

比如我们实现一套针对某个接口的一组函数,只要实现了该接口约定方法的任意类型,都可以使用这一组函数。而不需要其他类型重新实现这一套函数了。

type 接口名字 interface {
	 方法名1(参数)(返回值)
	 方法名2(参数)(返回值)
	 ...
	 //这里有几个方法,类型必须实现几个同名方法,否则不算实现了该接口
}

简单使用

比如,我们实现一组加减乘除的函数,传入的参数是一个接口;
该接口约束一个方法:获取运算的两个变量;
只要实现了该约束的任意类型,都可以当做该接口传入这一组加减乘除的函数中被运算。

这里结构体element,只要实现了getElement方法,就可以被当做接口Operation被传入加减乘除这四个函数被使用。
这样,我们就可以只实现加减乘除这四个函数,其他类型只要想用这四个函数,只需要实现接口element约束的方法getElement即可。


package main
 
import (
    "fmt"

)
type Operation interface{
    getElement()(a,b int)//返回用于运算的两个变量
}
// 加法
func Addition(opt Operation)int{
    a,b:=opt.getElement()
    return a+b
}
// 减法
func Subtraction(opt Operation)int{
    a,b:=opt.getElement()
    return a-b
}
// 乘法
func Multiplication(opt Operation)int{
    a,b:=opt.getElement()
    return a*b
}
// 除法
func Division(opt Operation)int{
    a,b:=opt.getElement()
    if b!=0{
        return a/b
    }
    return 0
}

type element struct{
    InputA int 
    InputB int 
    Result int
}
func (ele *element)getElement()(int,int){
    return ele.InputA,ele.InputB
}
func main() {
  e:=&element{InputA:2,InputB:3}
  fmt.Println(Addition(e)) //5
  fmt.Println(Subtraction(e))//-1
  fmt.Println(Multiplication(e))//6
  fmt.Println(Division(e))//0
}

在外部包定义接口的时候,记得区分首字母大小写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

InterestingFigure

迈克 Let's Go

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值