1. //一个对象只要全部实现了接口中的方法,那么就实现了这个接口。换句话说,接口就是一个需要实现的方法列表。
    2. package main
    3. import "fmt"
    4. type Sayer interface {
    5. say()
    6. }
    7. type dog struct {}
    8. type cat struct {}
    9. func (d dog) say() {
    10. fmt.Println("汪汪汪")
    11. }
    12. func (c cat) say() {
    13. fmt.Println("喵喵喵")
    14. }
    15. func main() {
    16. var x Sayer
    17. a := cat{}
    18. b := dog{}
    19. x = a
    20. x.say()
    21. x = b
    22. x.say()
    23. }
    24. //输出:
    25. //喵喵喵
    26. //汪汪汪
    1. //一个类型实现多个接口
    2. package main
    3. import "fmt"
    4. type Sayer interface {
    5. say()
    6. }
    7. type Mover interface {
    8. move()
    9. }
    10. type dog struct {
    11. name string
    12. }
    13. func (d dog) say() {
    14. fmt.Printf("%s会叫汪汪汪\n",d.name)
    15. }
    16. func (d dog) move() {
    17. fmt.Printf("%s会动\n", d.name)
    18. }
    19. func main() {
    20. var x Sayer
    21. var y Mover
    22. var a = dog{name:"黑子"}
    23. x = a
    24. y = a
    25. x.say()
    26. y.move()
    27. }
    28. //输出:
    29. //黑子会叫汪汪汪
    30. //黑子会动