ホームページ > バックエンド開発 > Golang > Golang でさまざまなデータ型に対応する汎用関数を作成するにはどうすればよいですか?

Golang でさまざまなデータ型に対応する汎用関数を作成するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-27 04:09:30
オリジナル
258 人が閲覧しました

 How Can We Create Generic Functions in Golang for Different Data Types?

Golang のジェネリック メソッド パラメーター

Go では、さまざまな型のデータを操作する関数が必要であることが一般的です。たとえば、特定のタイプのスライス内の要素の数を数える関数を考えてみましょう。最初に設計された特定の型だけでなく、あらゆる型のデータを処理できるようにこの関数を設計するにはどうすればよいでしょうか?

1 つのアプローチは、インターフェイスを使用することです。インターフェイスは、本質的に、型が必要とするメソッドのセットを定義するコントラクトです。インターフェイスに準拠するように実装します。インターフェイスをメソッド パラメーターとして使用すると、必要なインターフェイスを実装する任意の型で動作する汎用関数を作成できます。

次の例を考えてみましょう。ここでは、要素の数をカウントする汎用 Count 関数を作成することを目的としています。スライス内:

<code class="go">func Count[T any](s []T) int {
  return len(s)
}</code>
ログイン後にコピー

このようなジェネリックスを使用すると、任意の型のスライスを Count に渡すことができ、入力型に基づいて要素を動的にカウントできるようになります。

さらに、次のことができます。インターフェイスを利用して、特定のタスク用の汎用メソッドを実装します。たとえば、GetID メソッドを使用して Identifiable インターフェイスを定義し、スライス要素の実際の型に関係なく、ID 値に基づいてスライス内の要素を検索する汎用 FindByID 関数を作成できます。

<code class="go">type Identifiable interface {
  GetID() int
}

func FindByID[T Identifiable](s []T, id int) *T {
  for i, v := range s {
    if v.GetID() == id {
      return &s[i]
    }
  }
  return nil
}</code>
ログイン後にコピー

インターフェイスとジェネリックを組み込むことで、柔軟性が高く、さまざまな種類のデータを効果的に操作できる関数を作成する力が得られます。

以上がGolang でさまざまなデータ型に対応する汎用関数を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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