go语言接口

go语言的接口interface

go语言的interface是一种类型,它是一个或多个方法的集合,只要实现了interface中定义的方法,那么就是该interface类型

如: 假如我们定义只要会嘎嘎嘎叫的鸟都是鸭子

package main

import "fmt"

// 定一个duck的接口类型,内部只要实现gaga即可
type duck interface {
	gaga()
}

// 定义一个bird的结构体
type bird struct {
	name string
}

// bird结构体的gaga方法
func (b bird) gaga() {
	fmt.Printf("%s:嘎嘎嘎", b.name)
}

// 定义一个鸭子叫的函数,参数为duck类型
// 内部调用duck的gaga方法
func duck_say(d duck) {
	d.gaga()
}

func main() {
	b := bird{name: "鸭子"}
	duck_say(b)
}

注意:如果gaga方法是使用*bird(指针接受者)来接受的,那么main函数中的duck_say应该接受b的地址

type people interface {
	get_name() string
	color(c string) string
}

结构体支持函数参数和返回值的定制

posted @ 2020-04-07 18:16  Ivy丶  阅读(126)  评论(0编辑  收藏  举报