首頁 >後端開發 >Golang >golang函數切片作為參數傳遞

golang函數切片作為參數傳遞

WBOY
WBOY原創
2024-04-22 16:48:02755瀏覽

Go 語言中函數切片可作為參數傳遞,並增強程式碼彈性。語法如下:func function(fn func([]int) []int, slice []int) []int,其中 function 接收函數切片 fn 和切片 slice 作為參數。

golang函數切片作為參數傳遞

Go 語言中將函數切片作為參數傳遞

在 Go 語言中,函數可以作為參數傳遞給其他函數。這是一種強大的技術,它可以讓你的程式碼更靈活、更可重複使用。

語法

將函數切片作為參數傳遞的語法如下:

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

function 是接收函數切片 fn 和切片slice 作為參數的函數。 func 定義了函數切片的類型,它接收一個長度為 N 的整數切片,並傳回一個長度為 M 的整數切片。

實戰案例

我們來看一個將函數切片作為參數傳遞的實戰案例。假設我們有一個函數 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn