[解決済み] なぜGoにはジェネリックがないのか?
質問
免責事項:私はまだ1日しか囲碁をやっていないので、多くのことを見逃している可能性が高いです。
なぜGoにはgenerics/templates/whatsInANameの本当のサポートがないのか、誰か知っていますか?そこで、ジェネリックな
map
がありますが、これはコンパイラが提供するもので、Go プログラマは自分自身の実装を書くことができません。Go を可能な限り直交させるという話がありますが、なぜジェネリック型を使用することはできても、新しい型を作成することができないのでしょうか?
特に関数型プログラミングに関しては、ラムダやクロージャさえありますが、ジェネリックを欠いた静的型システムでは、以下のような高次のジェネリック関数をどのように書けばよいのでしょうか?
filter(predicate, list)
? OK、リンクリストなどは
interface{}
を犠牲にして、型安全性を確保することができます。
SO / Googleで素早く検索しても何の洞察も得られなかったので、ジェネリックは、もしあるとしても、後付けでGoに追加されるように見えます。私は、Thompson が Java の人たちよりもずっとうまくやることを信頼していますが、なぜジェネリックスを除外するのでしょうか?あるいは、計画されていて、まだ実装されていないだけなのでしょうか?
どのように解決するのですか?
この答えはここで見つかります。 http://golang.org/doc/faq#generics
<ブロッククオートなぜGoには一般的な型がないのですか?
ジェネリックはいつかは追加されるかもしれません。一部のプログラマがそうであることは理解していますが、私たちはその緊急性を感じていません。
ジェネリックは便利ですが、型システムおよびランタイムの複雑さという犠牲を伴います。私たちは考え続けていますが、複雑さに比例した価値を与えるデザインはまだ見つかっていません。一方、Go の組み込みのマップとスライス、およびコンテナを構築するために空のインターフェイスを使用する機能 (明示的なアンボックス) は、多くの場合、ジェネリックが可能にすることを、よりスムーズではないにしても行うコードを書くことが可能であることを意味しています。
これはまだ未解決の問題です。
関連
-
[解決済み] golangでチャンTの満杯を監視する
-
[解決済み] KotlinのPair用コンパレータ
-
[解決済み] List<Dog> は List<Animal> のサブクラスですか?Java のジェネリックはなぜ暗黙のうちに多相性にならないのですか?
-
[解決済み】Kotlinのreifiedキーワードはどのように機能するのですか?
-
[解決済み】Scala。抽象型とジェネリックス
-
[解決済み] なぜJavaのenumリテラルは汎用型パラメータを持つことができないのですか?
-
[解決済み] なぜ例がコンパイルできないのか、別名、(co-, contra-, in-)分散はどのように機能するのか?
-
[解決済み] KotlinでGsonを使ったTypeToken + ジェネリックの使い方
-
[解決済み] kotlinのoutキーワードとは
-
[解決済み] なぜGoにはジェネリックがないのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] golangでチャンTの満杯を監視する
-
[解決済み] KotlinのPair用コンパレータ
-
[解決済み】Kotlinのreifiedキーワードはどのように機能するのですか?
-
[解決済み】Scala。抽象型とジェネリックス
-
[解決済み] Kotlinのジェネリックにおける "*"と "Any "の違いについて
-
[解決済み] なぜ例がコンパイルできないのか、別名、(co-, contra-, in-)分散はどのように機能するのか?
-
[解決済み] KotlinでGsonを使ったTypeToken + ジェネリックの使い方
-
[解決済み] kotlinのoutキーワードとは
-
[解決済み] なぜGoにはジェネリックがないのか?