2017-01-28 8 views
2

fmt.Stringerと同様に、fmtパッケージは、値を印刷するときにerror interfaceを探します。 typeが両方のインターフェイスを満たしている場合は、errorではなく、Stringerの外観でのみfmtが検索されます。どうして?タイプにStringererrorの両方を実装する方法は?タイプにfmt.Stringerとエラーインターフェイスの両方を実装する方法は?

+0

私はそれがこのように実装された理由を知りませんが、それは彼らと思われます'fmt.Println()'の 'Stringer'の前に' error'をチェックしています:https://golang.org/src/fmt/print.go#L576 – ymonad

+0

@ymonad正確には、 time: – furusiyya

+0

@hackingNerd "一度に両方のインターフェースを実装することはできません"というのは間違いです。もちろん、両方のインタフェースを実装することもできます。 fmt.Printfが最初に 'Error'を使うことを選択しただけです。しかし、あなたのタイプはまだ両方のインターフェースを実装しています。 – Volker

答えて

関連する問題