実装者に Click メソッドが必要なインターフェイスがあります。ただし、このインターフェースを実装する型 FakeTicker は、Click メソッドに加えて Tick メソッドも実装しています。
package main
type Ticker interface{
Click() string
}
type FakeTicker struct{
val string }
func (f FakeTicker) Click() string {
return f.val
}
func (f FakeTicker) Tick() int { return 1 }
func main() {
var clocker Ticker
clocker = FakeTicker{"Val"}
clocker.Tick()
}
ここで、「clocker.Tick undefined (type Ticker has no field or method Tick)」というエラーが表示されます。
インターフェイスにはメソッド Click() しかないことは理解していますが、FakeWriter がインターフェイスを実装しているので、独自のメソッド Tick() を呼び出すことができるはずではありませんか?