美文网首页
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