ホームページ >バックエンド開発 >Golang >Golang汎用関数アプリケーション

Golang汎用関数アプリケーション

WBOY
WBOYオリジナル
2024-04-29 13:45:01772ブラウズ

Go 1.18 では、汎用関数が導入され、型パラメーター化がサポートされ、コードの再利用性が強化されています。ジェネリック関数の構文は、 func 関数名 [型パラメータ] (入力パラメータ 型パラメータ) 型パラメータであり、型パラメータ化された型を入力および戻り値の型として使用できます。たとえば、Min[T 数値] (a, b T) T の場合、T は数値型である必要があり、a と b は T 型の入力パラメーターであり、小さい方の数値が返されます。ジェネリック関数によりコードの再利用性が大幅に向上し、さまざまなタイプに適した一般的なコードを作成できるようになります。

Golang汎用関数アプリケーション

Go でのジェネリクスの関数アプリケーション

Go 1.18 以降で導入されたジェネリクスにより、関数は Type パラメータ化された型を受け入れ、返すことができます。これにより、コードの再利用性と柔軟性が大幅に向上します。

構文

汎用関数の構文は次のとおりです:

func myFunc[T any](input T) T {
    // ...
}

その中には次のとおりです:

  • myFunc は関数名です。
  • T any は型パラメータです。カスタム タイプを含め、任意のタイプにすることができます。
  • input は、パラメータ化された型を持つ入力パラメータです。
  • T は、型パラメーター化された型の戻り値の型です。

実際的なケース

2 つの数値の最小値を計算する関数を作成するとします。ジェネリック関数を使用すると、特定の型シグネチャを持つ複数の関数を作成することなく、これら 2 つの数値を任意の数値型で表すことができます。

次の汎用関数を作成できます:

func Min[T number](a, b T) T {
    if a < b {
        return a
    }
    return b
}

ここで:

  • Tnumber は、型パラメータ T が数値でなければならないことを意味します。型 (たとえば、int、float64)。
  • a および b は、タイプ T の入力パラメーターです。
  • if-else ステートメントは 2 つの数値を比較し、小さい方の数値を返します。

この関数を使用して、さまざまなタイプの数値の最小値を計算できます:

var a int8 = 10
var b int16 = 20
min := Min(a, b)  // 类型推断为 int16
fmt.Println(min)  // 输出:10

結論

Go ジェネリックスは許可することで受け入れます。関数と戻り値の型指定により、コードの再利用性と柔軟性が大幅に向上します。ジェネリック関数を使用すると、さまざまな型で動作するジェネリック コードを作成できます。

以上がGolang汎用関数アプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。