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