ホームページ  >  記事  >  バックエンド開発  >  golang 関数ポインターの原理と応用

golang 関数ポインターの原理と応用

PHPz
PHPzオリジナル
2024-04-29 11:15:01928ブラウズ

Go の関数ポインターを使用すると、関数を値として保存できます。作成方法には、直接代入する方法と func キーワードを使用する方法があります。 () 演算子を介して呼び出されます。応用例:配列内の奇数要素の合計を計算し、関数ポインタを介して奇数判定関数を渡します。

golang 関数ポインターの原理と応用

Go 言語における関数ポインターの原則と応用

関数ポインターの原則

Go 言語では、関数は値です。変数を使用して保存できます。関数ポインタは、関数を指す変数です。これは # プレフィックスで表され、構文は次のとおりです。

type FuncType func(args) (returns)
var funcPtr *FuncType

関数ポインターの作成

関数ポインターは次の方法で作成できます。

  1. 直接割り当て:

    var add = func(a, b int) int {
        return a + b
    }
    var addPtr = &add
  2. #func キーワードを使用:

    var addPtr = func(a, b int) int {
        return a + b
    }

関数ポインターの呼び出し

関数ポインターを呼び出すには、以下に示すように

() 演算子を使用する必要があります。 実際のケース:

配列内の奇数要素の合計を計算する

result := (*addPtr)(1, 2)  // 等于 add(1, 2)
出力:

package main

import "fmt"

// 奇数函数
func isOdd(x int) bool {
    return x%2 != 0
}

// 计算奇数和
func sumOdds(arr []int, odd func(int) bool) int {
    sum := 0
    for _, v := range arr {
        if odd(v) {
            sum += v
        }
    }
    return sum
}

func main() {
    arr := []int{1, 2, 3, 4, 5, 6, 7}
    total := sumOdds(arr, isOdd)
    fmt.Println("奇数元素的和:", total)
}

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

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