一 点睛
1 Golang 接口中不能有任何变量。
2 一个接口(比如 A 接口)可以继承多个别的接口(比如 B、C 接口),这时如果要实现 A 接口,也必须将 B、C 接口的方法也全部实现。
3 interface 类型默认是一个指针(引用类型),如果没有对 interface 初始化就使用,那么会输出 nil。
4 空接口 interface{} 没有任何方法,所以所有类型都实现了空接口, 即可以把任何一个变量赋给空接口。
二 代码
package main
import (
"fmt"
)
type BInterface interface {
test01()
}
type CInterface interface {
test02()
}
type AInterface interface {
BInterface
CInterface
test03()
}
// 如果需要实现 AInterface,就需要将 BInterface CInterface 的方法都实现
type Stu struct {
}
func (stu Stu) test01() {
}
func (stu Stu) test02() {
}
func (stu Stu) test03() {
}
type T interface {
}
func main() {
// 一个接口(比如 A 接口)可以继承多个别的接口(比如 B,C 接口),这时如果要实现 A 接口,也必须将 B,C 接口的方法也全部实现
var stu Stu
var a AInterface = stu
a.test01()
// 空接口 interface{} 没有任何方法, 所以所有类型都实现了空接 口, 即我们可以 把任何一个变量 赋给空接口。
var t T = stu // ok
fmt.Println(t)
var t2 interface{} = stu
var num1 float64 = 8.8
t2 = num1
t = num1
fmt.Println(t2, t)
}
三 测试
{}
8.8 8.8