ホームページ  >  記事  >  バックエンド開発  >  パラメータとして渡される golang 関数ポインタ

パラメータとして渡される golang 関数ポインタ

WBOY
WBOYオリジナル
2024-04-22 14:18:01921ブラウズ

関数ポインタは、関数のメモリ アドレスを指す Go の変数で、値の型などの関数を処理できるようにします。パラメータとして渡されると、動的な動作が提供されます。 関数ポインタの型を定義します: func(*TypeName)ReturnType 関数ポインタをパラメータとして関数に渡し、関数ポインタに基づいてさまざまな関数を実装します (たとえば、比較関数による並べ替えなど) )

パラメータとして渡される golang 関数ポインタ

#関数ポインタは Go のパラメータとして渡されます

関数ポインタについて

Go では、関数ポインターは関数を指す変数です。これは本質的には関数のメモリ アドレスへのポインタです。関数ポインターを使用すると、関数を他の値型と同じように扱うことができます。

関数ポインタの構文

関数ポインタの型は次の構文で定義されます:

func(*TypeName)ReturnType

たとえば、次のコードはint 型パラメータを受け取るポインタ そして int 値を持つ関数へのポインタを返します。

type fnType func(int) int

パラメータとしての関数ポインタ

関数ポインタはパラメータとして渡すことができます他の機能の。これにより、関数にさまざまな動作を動的に提供できるようになります。

実際のケース: ソート関数

整数のセットをソートする必要があるシナリオを考えてみましょう。整数のスライスと関数ポインタを引数として受け取る

sortInts という関数を定義できます。関数ポインタは、整数の比較と並べ替えに使用される関数を指定します。

func sortInts(nums []int, compareFn fnType) {
    // 根据 compareFn 函数排序 nums
}

main 関数で

sortInts を呼び出し、さまざまな比較関数を渡して、整数スライスを異なる方法で並べ替えることができます。

func main() {
    nums := []int{5, 2, 8, 3, 1}
    
    // 升序排序
    sortInts(nums, func(a, b int) int { return a - b })
    fmt.Println(nums) // [1 2 3 5 8]
    
    // 降序排序
    sortInts(nums, func(a, b int) int { return b - a })
    fmt.Println(nums) // [8 5 3 2 1]
}

結論

関数ポインタは Go の強力なツールであり、動的で再利用可能なコードを作成できます。関数ポインターの構文と関数ポインターを引数として渡すメカニズムを理解することで、複雑な動作やアルゴリズムを簡単に実装できます。

以上がパラメータとして渡される golang 関数ポインタの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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