对于一个结构体来说,可以通过同时实现多个接口的方法来实现多个接口,例如:
type Writer interface {
Write()
}
type Closer interface {
Close()
}
type WriteCloser struct{}
func (wc *WriteCloser) Write() {
fmt.Println("write")
}
func (wc *WriteCloser) Close() {
fmt.Println("close")
}
func main() {
var It1 Writer = &WriteCloser{}
It1.Write()
var It2 Closer = &WriteCloser{}
It2.Close()
}
运行之后的结果是:
write
close
对于一个接口来说,可以通过接口字段组合实现不同的行为,也叫做接口嵌入。例如:
type Writer interface {
Write()
}
type WriteCloser struct{
Writer
}
type writedatabase struct {}
type writefile struct {}
func (wd *writedatabase) Write() {
fmt.Println("write to database")
}
func (wf *writefile) Write() {
fmt.Println("write to file")
}
func main() {
var wc = &WriteCloser {
&writedatabase{},
}
wc.Write()
var wc2 = &WriteCloser {
&writefile{},
}
wc2.Write()
}
运行之后的结果是:
write to database
write to file