ホームページ > バックエンド開発 > Golang > ジェネリック関数で渡されたスライスの結合を反復するにはどうすればよいですか? (Tコアレスタイプ)

ジェネリック関数で渡されたスライスの結合を反復するにはどうすればよいですか? (Tコアレスタイプ)

WBOY
リリース: 2024-02-06 08:50:08
転載
379 人が閲覧しました

如何迭代通用函数中传递的切片并集? (T无芯型)

質問の内容

go 1.18 でジェネリックスをテストしており、この例を調べました。 その例を再作成したいのですが、int スライスまたは float スライスを渡すことができ、関数内でスライス内のすべてを合計します。

これは、スライスを反復処理しているときにいくつかの問題に遭遇したときです。私が試したことは次のとおりです:

リーリー

エラーが表示されます:

リーリー

この目標を達成するにはどうすればよいですか?


正解


インターフェイスの コア タイプ (インターフェイス制約を含む) は次のように定義されます。

次の条件のいずれかが満たされる場合、インターフェイス t はコア タイプを持ちます。 満足する:###

  • 単一の型

    uがあり、これはt型セットのすべての型の基礎となる型です

  • または、 t のタイプ セットには、同じ要素タイプ e を持つチャネル タイプのみが含まれており、すべての有向チャネルは同じ方向を持ちます。
  • インターフェイス制約には
2 つの

基礎となる型 ([]int64[]float64) があるため、インターフェイス制約にはコア型がありません。 したがって、コアタイプが必要な場所では使用できません。特に

range

make です。 基本型を必要とするようにインターフェイスを変更し、関数シグネチャでスライスを指定できます。

リーリー

これも機能しますが、より冗長になります:

リーリー

以上がジェネリック関数で渡されたスライスの結合を反復するにはどうすればよいですか? (Tコアレスタイプ)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート