中級 › 型付きnilをinterfaceに入れると == nil が false になる › パターン3
型付きnilをinterfaceに入れると == nil が false になる
nilのポインタをerrorなどのinterface型の変数に代入すると、そのinterfaceは型情報を持った「型付きnil」になります。
1 package main 2 3 import "fmt" 4 5 type NotFoundError struct{} 6 7 func (e *NotFoundError) Error() string { return "not found" } 8 9 func find() error { 10 var e *NotFoundError 11 _ = e 12 _______________________ ^ 13 } 14 15 func main() { 16 err := find() 17 fmt.Println(err == nil) 18 }
出力: false
空欄を埋めて実行を通す
interfaceは(型, 値)のペアなので、値がnilでも型情報が入っていればnilと等しくありません。
次の問題