开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:Go 接口注意事项和细节(2)】 学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9701
Go 接口注意事项和细节(2)
一、接口(interface)注意事项和细节2
1. 一个自定义类型可以实现多个接口
举例
想实现新接口,创建新的接口,用 A2代替 C 方法, 由上可见,Monster 可代替
代码如下:
type AInterface interface {
Say ()}type BInterface interface
Hel
l
o ()
type Monster struct {
{
func (m Monster) Hello() {
fmt.println ("Monster Hello () ~~")}func (m Monster) Say()
{
fmt. Println ("Monster Say () ~~")
}
代码讲解:有一个接口,写作个 a 接口,再写个 b 接口。命名方法叫做 hello,a 接口和 b 接口各有一个。现在写一个代码 master,它是个结构体。把 b 接口里面 hello 给事先与 monster 接口相接,从而运行代码时,monster 实现了 a interfance 同时也实现了 b interface.
//Monster实现了 AInterface 和 BInterfacevar monster Monstervar
a2 AInterface=monstervar
b2 BInterface=monste
a2. Say ()
b2. Hello ()
此时,运行方法即可成功
2. Golang 接口中不能有任何变量一个自定义类型可以实现多个接口
type AInterface interfacet
Testo1 ()
Testez ()
代码讲解:首先找到代码的方法,忽略代码的定义名称,但你一定要把他的方法找到,不用显示这个开始的定义是 c 接口的,你不用这样子,只要把方法找到就可以。他是第三,把这三个方法都实现了。此时,这个结构体就是,后面检验这个结构体。创建一个 student,就是 stu,把这个变量交给 a,看他能不能接收到。把这个交给他,再看代码有没有问题。调一下 task,看一下代码哪里有问题。此时跑一下代码
运行结果如下
3. 一个接口(比如 A 接口)可以继承多个别的接口(比如 B,C 接口),这时如果要实现 A 接口,也必须将 B,C 接口的方法也全部实现。
举例来看
func (i integer) say() {
fmt. Println ("integer Say i =" ,i )
{
Name string
Say ()
创建
A、B、C 接口
type BInterface interface {
test01 ()
}type CInterface interface {
test02 ()
)
type AInterface interface {
BInterfaceCInterfacetest03 ()
//如果需要实现 AInterface,就需要将 BInterface CInterface 的方法都实现 type stu struct {
}func
func main () {
这样就能实现接口对接
4. interface 类型默认是一个指针,如果没有对 interface 初始化就使用,那么会输出。
5. 空接口 interface{}没有任何方法,所以所有类型都实现了空接口【案例演示】
举例
func main () {
var stu stuvar a AInterface
= stua.test01 ()
var tT
=stu//okfmt. Println (t)var t2 interface {}
=stuvar numl float64 =8. 8t2
= num1fmt. Println (t2)
此时跑一次代码,便可以呈现出一个值。