Interface embedding
Context
Section titled “Context”Interfaces can embed other interfaces. This creates a new interface that contains all methods of the embedded interfaces. It is a form of composition, similar to struct embedding.
Example
Section titled “Example”Embed Reader and Writer into ReadWriter.
Code example
Section titled “Code example”package main
import "fmt"
type Reader interface { Read(p []byte) (n int, err error)}
type Writer interface { Write(p []byte) (n int, err error)}
type ReadWriter interface { Reader Writer}
// A simple struct that implements bothtype File struct{}
func (f File) Read(p []byte) (int, error) { fmt.Println("Reading...") return 0, nil}
func (f File) Write(p []byte) (int, error) { fmt.Println("Writing...") return 0, nil}
func main() { var rw ReadWriter = File{} rw.Read(nil) rw.Write(nil)}Output
Section titled “Output”Reading...Writing...