Humanity

Edit the world by your favorite way

Go の hashicorp/go-multierror 使ったら訳わからん挙動に遭遇してしまった

基本的な Go の挙動が理解できてないのかもしれないですが、なぜ以下のコードで (2) err != nil: true となるのかが分かりません。 誰か教えて… (g() がメソッドなのはなるべく元のコードと似せたせいです)

gist.github.com

追記

KoRoN さんとりんだんさんに教えてもらいました。

というわけで教えてもらった記事の最初に「Goのinterfaceの実体は参照と型情報のペア」と書いてありました。 Go 公式の FAQ にも書いてあります。 こっちのが私のコードより問題と解決策が一目で分かりやすかったので皆さんもハマる前にぜひ。