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