教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 go语言中interface接口的使用(效果同c 虚函数多态)

go语言中interface接口的使用(效果同c 虚函数多态)

发布时间:2021-05-15   编辑:jiaochengji.com
教程集为您提供go语言中interface接口的使用(效果同c 虚函数多态)等资源,欢迎您收藏本站,我们将为您提供最新的go语言中interface接口的使用(效果同c 虚函数多态)资源

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 虚函数多态)”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
go语言中interface接口的使用(效果同c 虚函数多态)
go语言学习-接口赋值的两种类型
基于类型系统的面向对象编程语言Go
Go接口
golang 接口_Golang之接口
go 获取函数地址_Go语言基础--接口浅析
Golang interface 接口要点梳理
Go 语言到底适合干什么?
go struct 成员变量后面再加个字符串是什么意思?_Go语言的学习笔记(第十章) 接口...
第07章 Go语言接口(interface),Golang接口(interface)

[关闭]
~ ~