Code Fix

中級型付き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

空欄を埋めて実行を通す

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

型付きnilをinterfaceに入れると == nil が false になる

値自体はnilでも、interfaceとしてはnilと等しくなくなります。

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

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