go语言中interface接口,它把所有的具有共性的方法定义在一起,然后给其他类型重写调用。跟c 虚函数多态一样,相当于刚开始是定义了一个基类,提供了很多公有函数,具体实现是要在派生类里自己重写,以便在运行时根据所指向的对象,调用对应的函数接口。
package main
import "fmt"
//定义了一个接口Person,里面有getName,setName两个方法
type Person interface {
getName() string
setName(name string) bool
}
//定义了一个Student结构体,分别重写getName,setName这两个方法
type Student struct {
m_Name string
}
func (stu Student) getName() string {
fmt.Println("这是调用Student.getName")
return stu.m_Name
}
//因为setName是要修改结构体里成员,所以这里要传入的是结构体指针。
func (stu *Student) setName(name string) bool {
fmt.Println("这是调用Student.setName")
stu.m_Name=name
return true
}
//定义了一个Man结构体,同上边Student
type Man struct {
m_Name string
}
func (man Man) getName() string {
fmt.Println("这是调用Man.getName")
return man.m_Name
}
func (man *Man) setName(name string) bool {
fmt.Println("这是调用Man.setName")
man.m_Name=name
return true
}
func main() {
//定义了一个Person类型变量,并分别为之赋值为Student和Man,体验到c 虚函数多态的效果
var per Person
per=new(Student)
fmt.Printf("getName=%s\n",per.getName())
if per.setName("haha") {
fmt.Printf("getName=%s\n\n",per.getName())
}
per=new(Man)
fmt.Printf("getName=%s\n",per.getName())
if per.setName("haha") {
fmt.Printf("getName=%s\n\n",per.getName())
}
}
您可能感兴趣的文章:
go语言中interface接口的使用(效果同c 虚函数多态)
go语言学习-接口赋值的两种类型
基于类型系统的面向对象编程语言Go
Go接口
golang 接口_Golang之接口
go 获取函数地址_Go语言基础--接口浅析
Golang interface 接口要点梳理
Go 语言到底适合干什么?
go struct 成员变量后面再加个字符串是什么意思?_Go语言的学习笔记(第十章) 接口...
第07章 Go语言接口(interface),Golang接口(interface)