私はEffective GoとGoチュートリアルといくつかのソースを読んだことがありますが、interface {}
構文の背後にある正確なメカニズムはGoですが、やや神秘的です。私は最初にheap.Interface
を実装しようとしていましたが、それは何らかの種類のコンテナであるように思われます(少しモナドを思い出させます)。Goの "interface {}"構文の役割は何ですか?
Goがこれを使用する理由は何ですか?ジェネリックの回避策ですか? heap.Pop(&h).(*Foo)
(Foo型のヒープポインタの場合)で逆参照するよりも、heap.Interface
の値を取得するよりエレガントな方法はありますか?
ああ、それは匿名のタイプです!それを持って、ありがとう!私は保持されているタイプを照会するために何らかの反射を使用すると思います。私はまだその部分で働いていない。これまでは(奇数、私に) '()'構文を使用して値を戻しました。 –
タイプを照会できるようにするリフレクションパッケージがあります。通常のスイッチと似たタイプスイッチを使用できますが、ケースはタイプです。あるいは、タイプアサーションのエラーのないバージョンを使用することもできます(例えば 'value、ok:= foo。(type)')。 –