接口实现中的非接口方法

Bha*_*rat 3 oop go

我有一个定义方法的接口。我有一个实现这个接口的结构。在其中,我实现了该接口中的方法,并且还定义了其他方法。

例如:

package main

import (
    "fmt"
)   

type Animal interface {
    MakeNoise()
}

type Dog struct {
    color string
}

/* Interface implementation */

func (d *Dog) MakeNoise() {
    fmt.Println("Bark!")
}

/* End Interface implementation */

func (d *Dog) WagTail() {
    fmt.Println(d.color + " dog: Wag wag")
}

func NewDog(color string) Animal {
    return &Dog{color}
}

func main() {
    dog := NewDog("Brown")
    dog.MakeNoise()
    dog.WagTail()

}
Run Code Online (Sandbox Code Playgroud)

在游乐场上:https ://play.golang.org/p/B1GgoNToNl_l

这里,WagTail() 不是 Animal 接口的一部分,而是属于 Dog 结构。运行此代码会出现错误

dog.WagTail 未定义(Animal 类型没有字段或方法 WagTail)。

有没有办法让结构遵守接口并定义它自己的方法?

小智 5

这可能对你有帮助。

d := dog.(*Dog)
d.WagTail()
Run Code Online (Sandbox Code Playgroud)

在游乐场上: https: //play.golang.org/p/KlNqpmvFTJi