接口(interface)这个玩意就相当于一个对接规范和标准,并不是go独有的,go的实现也如出一辙,只要你实现了interface 的方法集合,那就实现了对应的interface,直接上代码看看
type integer int
func (i integer) Write(p []byte) (int, error) {
fmt.Println(string(p), i)
return 1, nil
}
func out(w io.Writer, s string) {
w.Write([]byte(s))
}
func main() {
var i integer = 1
out(i, "joker")
}
// output
joker
上例中先自定义类型interger
,然后实现接口io.Writer
的方法集(其实就一个Write方法),最后调用out
方法就可以传递integer
类型变量了,如果进行一个小变动
func (i *integer) Write(p []byte) (int, error) {
fmt.Println(string(p))
return 1, nil
}
将方法的receiver改成指针类型,那么传递给out
方法的第一个参数相应也得改成指针类型,否则报错
网友评论