go interface

2019-03-20  本文已影响0人  killtl

接口(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方法的第一个参数相应也得改成指针类型,否则报错

上一篇 下一篇

猜你喜欢

热点阅读