免責事項:私はGoで1日しか遊んだことがないので、多くの機会を逃した可能性があります。
Goでジェネリック/テンプレート/ whatsInANameが実際にサポートされていない理由を誰かが知っていますか?つまり、ジェネリックがありますが、それはmap
コンパイラーによって提供されますが、Goプログラマーは独自の実装を作成できません。Goをできるだけ直交にすることについてのすべての話で、なぜジェネリック型を使用できるが、新しい型を作成できないのですか?
特に関数型プログラミングに関して言えば、ラムダやクロージャさえありますが、静的型システムにジェネリックが欠けている場合、どうすれば一般的な高次関数を作成できfilter(predicate, list)
ますか?わかりました。リンクされたリストなどは、interface{}
タイプセーフを犠牲にして実行できます。
SO / Googleでクイック検索を行っても洞察は得られなかったため、ジェネリックがあったとしても、後から考えてGoに追加されるようです。私はThompsonがJavaの人よりもはるかに優れていると信じていますが、なぜジェネリックスを除外するのですか?または、それらは計画されていて、まだ実装されていませんか?
interface{}
静的型安全性を犠牲にします。ただし、Schemeには通常、静的な型チェックがないため、Schemeについて次の段落に言及する場合、これはやや奇妙な不満です。