如何理解go语言中的interface?
- interface是方法申明的集合
- 任何类型的对象实现了在interface接口中声明的全部方法,则表明该类型实现了该接口
- interface可以作为一种数据类型,实现了该接口的任何对象都可以给对应的接口类型变量赋值
package main
import (
"fmt"
)
// 定义一个数据写入器
type DataWriter interface {
WriteData(data interface{}) error
}
// 定义文件结构,用于实现DataWriter
type file struct {
}
// 实现DataWriter接口的WriteData方法
func (d *file) WriteData(data interface{}) error {
// 模拟写入数据
fmt.Println("WriteData:", data)
return nil
}
// 接口可以作为数据类型传递,体现2,3
func Cprint(writer DataWriter){
fmt.Println("Cprint")
}
func main() {
// 实例化file
f := new(file)
// 声明一个DataWriter的接口
var writer DataWriter
// 将接口赋值f,也就是*file类型
writer = f
// 使用DataWriter接口进行数据写入
err := writer.WriteData("data")
if err != nil{
fmt.Println("writeData err!")
return
}
Cprint(f)
}