11 接口(Interface)
接口就是定义了一组方法的类型。
接口是对行为的抽象。
例如,标准库中定义了io.Reader
接口:
绝大多数操作二进制数据流的函数(比如JSON解码器)都是把io.Reader
作为数据来源。这样,我们就可以为物理文件、内存中的字节、网络连接等实现Reader
接口,使json.Decode
可以处理这些数据。
下面展示了如何定义和实现一个简单接口:
上述代码的输出: 👉 点击此处 👈 亲自尝试执行代码。
跟其他大多数语言都不同,Go的接口是被隐式实现的。
我们不需要显式地声明struct User
要实现Stringer
接口。
接口只可以包含方法,不可以包含数据。如果您想既复用方法又复用数据,请使用结构体嵌入。
您只能在定义类型的包里面为该类型定义方法。我们刚才先定义了MyInt
类型然后才为它定义方法,是因为不允许直接为内置类型定义方法。
最后更新于