error
Golang でリフレクションを使用して型の名前またはパッケージ パスを取得すると、プログラムがパニックに陥ります ( panic: runtime error: invalid memory address or nil pointer dereference
.
この行動の理由は何ですか?(他の組み込み型に対して同じ操作を行うと、型名とパッケージ パスの空の文字列が返されます。)
私は言語の設計に興味があります-error
他の組み込み型とは異なる動作をすることが望ましい理由がわかりません。
例えば:
package main
import (
"fmt"
"reflect"
)
func main() {
var str string
strType := reflect.TypeOf(str)
fmt.Println(strType.Name()) // OK
fmt.Println(strType.PkgPath()) // OK
var err error
errType := reflect.TypeOf(err)
fmt.Println(errType.Name()) // panics
fmt.Println(errType.PkgPath()) // also panics
}
ここで遊び場に行きます: https://play.golang.org/p/JBMhMkjGPEV