Code Fix

上級ポインタレシーバのメソッドしか無い型は値ではinterfaceを満たさない › パターン2

ポインタレシーバのメソッドしか無い型は値ではinterfaceを満たさない

ポインタレシーバで定義したメソッドは、その型の値そのもの(非ポインタ)のメソッドセットには含まれません。

 1  package main
 2  
 3  import "fmt"
 4  
 5  type Writer interface {
 6  	Write() string
 7  }
 8  
 9  type Logger struct{ Prefix string }
10  
11  func (l *Logger) Write() string { return l.Prefix + ": ok" }
12  
13  func main() {
14  	l := Logger{Prefix: "info"}
15  	var w Writer = _________
                        ^
16  	fmt.Println(w.Write())
17  }
./main.go:15:17: cannot use l (variable of type Logger) as Writer value in variable declaration: Logger does not implement Writer (method Write has pointer receiver)

空欄を埋めて実行を通す

広告
広告スロット(未設定)

ポインタレシーバのメソッドしか無い型は値ではinterfaceを満たさない

値をそのままinterface型の変数に代入しようとするとコンパイルエラーになります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)