ホームページ >バックエンド開発 >Golang >golang 関数のスライスがパラメータとして渡されました

golang 関数のスライスがパラメータとして渡されました

WBOY
WBOYオリジナル
2024-04-22 16:48:02754ブラウズ

Go 言語の関数スライスをパラメータとして渡すことで、コードの柔軟性を高めることができます。構文は次のとおりです。 func function(fn func([]int) []int,slice []int) []int。function は関数スライス fn とスライススライスをパラメータとして受け取ります。

golang 関数のスライスがパラメータとして渡されました

Go 言語で関数スライスをパラメータとして渡す

Go 言語では、関数をパラメータとして他の関数に渡すことができます。これは、コードをより柔軟で再利用可能にする強力な手法です。

構文

関数スライスをパラメーターとして渡すための構文は次のとおりです。

func function(fn func([]int) []int, slice []int) []int

function は受信関数スライスです。 fn およびスライスslice を引数として持つ関数。 func は、長さ N の整数スライスを受け取り、長さ MM の整数スライスを返す関数スライスのタイプを定義します。

実践的なケース

関数スライスをパラメータとして渡す実際的なケースを見てみましょう。関数スライスとスライスを受け取り、関数スライス内の各関数をスライス内の各要素に適用する関数 apply があるとします。

package main

import "fmt"

func main() {
    // 定义函数切片
    fns := []func(int) int{
        func(i int) int { return i + 1 },
        func(i int) int { return i * 2 },
    }

    // 定义切片
    slice := []int{1, 2, 3}

    // 将函数切片和切片传递给 apply 函数
    result := apply(fns, slice)

    // 打印结果
    fmt.Println(result)
}

// apply 函数接收一个函数切片和一个切片,并对切片中的每个元素应用函数切片中的每个函数
func apply(fns []func(int) int, slice []int) []int {
    result := make([]int, len(slice))
    for i, v := range slice {
        for _, fn := range fns {
            result[i] = fn(v)
        }
    }
    return result
}

出力

[]int{2, 4, 6}

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

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