package main // 定义一个接口 // 有两个方法 // 注意:方法不能加func type IFile interface { Read(file string) (buf []byte) Write(file string, buf []byte) } type IReader interface { Read(file string) (buf []byte) } type IWriter interface { Write(file string, buf []byte) } // 定义一个结构体 // 通过下面定义的方法可以看出: // File同时实现了IFile IReader IWriter所有的方法 // 所以File实现了IFile 也实现了IReader和IWriter type File struct { } // 结构体中的方法 func (f *File) Read(file string) (buf []byte) { return nil } // 结构体中的方法 func (f *File) Write(file string, buf []byte) { } func main() { f := new(File) // File同时实现了IFile IReader IWriter所有的方法 // 所以File实现了IFile 也实现了IReader和IWriter // 所以这些转型都是符合语法的 var f1 IFile = f var f2 IReader = f var f3 IWriter = f f.Read("aa") f1.Read("bb") f2.Read("cc") // IWriter只定义了Write方法 f3.Write("dd", []byte {1,2}) }
有疑问加站长微信联系(非本文作者)