「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go Genericsで「*T」タイプ変数を「ストリンガー」として使用できないのはなぜですか?

Go Genericsで「*T」タイプ変数を「ストリンガー」として使用できないのはなぜですか?

2025-03-24に投稿されました
ブラウズ:957

Why Can't I Use a `*T` Type Variable as a `Stringer` in Go Generics?

を理解する「タイプ *tの変数を引数として使用できない」GENERICS

が提供されたコードスニペットで、 Goコンパイラは、

  • tは、その制約Foobarと本質的に同等ではないため、エラーが発生しています。したがって、 *tは *foobarまたは *barと同じではありません。現在、FooおよびBarタイプはこの方法をポインターレシーバーに実装していますが、 *tは本質的にこの方法を所有していません。タイプタイプの安全性をタイプアサーション(最適ではない)
  • は、 *tが任意の(t)。(ストリンガー)を使用してストリンガーを実装することを主張します。制約を再定義し、ジェネリック(優先)
をカスタマイズするfoobarインターフェイスへの制約としてストリンガーを追加します。インターフェイス。 bar] interface { *t ストリンガー } func blah [t foo | bar、u foobar [t]](){ var t t do(u(&t)) } func main(){ 何とか[foo]() }

この改訂コード:

にfoobarインターフェイスには制約としてストリンガーが含まれています。制約。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3