上級 › ポインタレシーバのメソッドしか無い型は値ではinterfaceを満たさない › パターン3
ポインタレシーバのメソッドしか無い型は値ではinterfaceを満たさない
ポインタレシーバで定義したメソッドは、その型の値そのもの(非ポインタ)のメソッドセットには含まれません。
1 package main 2 3 import "fmt" 4 5 type Runner interface { 6 Run() string 7 } 8 9 type Task struct{ Name string } 10 11 func (t *Task) Run() string { return t.Name + " done" } 12 13 func main() { 14 t := Task{Name: "build"} 15 var r Runner = _______ ^ 16 fmt.Println(r.Run()) 17 }
./main.go:15:17: cannot use t (variable of type Task) as Runner value in variable declaration: Task does not implement Runner (method Run has pointer receiver)
空欄を埋めて実行を通す
アドレス指定可能な変数への代入なら&は自動で補われますが、interfaceへの代入では自動補完されません。
次の問題