32. Go 语言中的接口
AI 概述
1. 接口定义2. 接口实现3. 自定义接口类型4. 小结
在所有编程语言中,接口都是一些方法的集合,通常都是”类”们都需要实现的一些公共方法。使这些”类”在使用过程中多了一层抽象。在使用接口时无需在意这些方法是如何实现的,只需在意这个接口中的方法本身。Go 语言提倡面向接口...
目录
在所有编程语言中,接口都是一些方法的集合,通常都是”类”们都需要实现的一些公共方法。使这些”类”在使用过程中多了一层抽象。在使用接口时无需在意这些方法是如何实现的,只需在意这个接口中的方法本身。Go 语言提倡面向接口编程,一来增强代码的可读性,二来可以使代码的模块之间的关系变得更加清晰、边界更加明显。本文就来介绍一下 Go 语言中的接口。
1. 接口定义
在 Go 语言中,接口也是一个数据类型,该类型使用结构 interface{...} 来定义。
代码示例:
var stuInterface interface{
PrintAge()
}
以上代码定义可一个接口类型的变量,其中包含的方法为 PrintAge()。
2. 接口实现
了解了 Go 语言中接口的定义之后,我们来学习一下如何实现 Go 语言的接口。
在 Go 语言的接口中有两个非常重要的特性:
- 只要有类实现(模拟)了接口中包含的所有方法,我们就称这个类型实现了这个接口;
- 只要是实现了这个接口的类型,用这个类型定义的变量就可以给这个接口声明的变量赋值。
所以从以上两个特性也可以推出interface{}类型的变量,可以接收 任何变量的赋值。这两个特性也被称为鸭子类型,即”走起来像鸭子,叫起来像鸭子(类型模拟了接口中包含的所有方法),那么它就是一只鸭子”。
代码示例:
package main
import (
"fmt"
)
var stuInterface interface {
PrintAge()
}
type Student struct {
Name string
Age int
}
func (s Student) PrintAge() {
fmt.Println(s.Age)
}
func main() {
stuInterface = Student{
Name: "Codey",
Age: 18,
}
stuInterface.PrintAge()
}
- 第 21~24 行:定义了一个自定义类型,并且这个类型实现了接口变量类型中的方法;
- 第 21 行:实例化一个自定义类型的变量,并赋值给这个接口变量;
- 第 25 行:使用接口中的方法。会发现打印了学生的年龄。
执行结果:

3. 自定义接口类型
为了方便使用,一般都会使用自定义类型来定义一个接口类型。同时还可以写一个函数来实例化接口。
代码示例:
package main
import (
"fmt"
)
type StudentInterface interface {
PrintAge()
}
type Student struct {
Name string
Age int
}
func (s Student) PrintAge() {
fmt.Println(s.Age)
}
func newStudent(name string, age int) StudentInterface {
return Student{Name: name, Age: age}
}
func main() {
stuInterface := newStudent("Codey", 18)
stuInterface.PrintAge()
}
- 第 20~22 行:定义一个函数来实例化接口;
- 第 24 行:初始化一个接口变量。
执行结果:

4. 小结
本文主要介绍了 Go 语言中接口的定义和使用。需要注意以下几点:
- 在 Go 语言中接口是一个类型;
- 一般使用自定义类型来定义接口;
- Go 语言的接口是鸭子类型。
以上关于32. Go 语言中的接口的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 32. Go 语言中的接口
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 32. Go 语言中的接口
微信
支付宝