Code Fix

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

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

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

 1  package main
 2  
 3  import "fmt"
 4  
 5  type Closer interface {
 6  	Close() string
 7  }
 8  
 9  type File struct{ Path string }
10  
11  func (f *File) Close() string { return f.Path + " closed" }
12  
13  func main() {
14  	f := File{Path: "a.txt"}
15  	var c Closer = _______
                       ^
16  	fmt.Println(c.Close())
17  }
./main.go:15:17: cannot use f (variable of type File) as Closer value in variable declaration: File does not implement Closer (method Close has pointer receiver)

空欄を埋めて実行を通す

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

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

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

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

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