インターフェイスがカスタム タイプのエラー メソッドに対して「悪いエラー」を返すのはなぜですか?
Go ではインターフェイスを使用できます型のメソッドを定義します。オブジェクトがインターフェイスを実装すると、そのインターフェイスで定義された各メソッドの実装が提供されます。
次の例を考えてみましょう:
type T int func (t T) Error() string { return "bad error" } func main() { var v interface{} = T(5) fmt.Println(v) // Output: "bad error" }
この例では、Error メソッドが定義されています。ただし、値 v が fmt.Println を使用して出力されると、出力は期待される整数値 5 ではなく「不正なエラー」になります。この動作を理解するには、次のようにします。 fmt パッケージのドキュメントを参照してください:
この場合、fmt.Println 関数が使用されます。これは、fmt.Printf("%v", v) と同等です。何が起こるかの説明は次のとおりです。
代わりに v の整数値を出力するには、fmt.Printf("%d",v) を使用できます。
以上が型が `error` インターフェイスを実装しているときに、`fmt.Println` が整数値の代わりに「bad error」を出力するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。