美文网首页
go interface

go interface

作者: killtl | 来源:发表于2019-03-20 23:10 被阅读0次

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

相关文章

网友评论

      本文标题:go interface

      本文链接:https://www.haomeiwen.com/subject/rhgxvqtx.html