首页 > 文章列表 > 在 Go 中将任意函数作为参数传递?

在 Go 中将任意函数作为参数传递?

golang
406 2023-07-13

问题内容

在 Go 中将任意函数作为参数传递?

正确答案

在Go中,你可以使用函数类型作为参数来传递任意函数。函数类型可以定义为一个签名,它指定了函数的参数和返回值的类型。然后,你可以创建该函数类型的变量,并将其他函数作为参数传递给它。

下面是一个示例代码,演示了如何在Go中将任意函数作为参数传递:

package main

import "fmt"

// 定义一个函数类型
type MyFunc func(string) string

// 函数类型作为参数传递
func Greet(name string, fn MyFunc) {
    greeting := fn(name)
    fmt.Println(greeting)
}

// 传递给Greet的函数
func EnglishGreeting(name string) string {
    return "Hello, " + name + "!"
}

func FrenchGreeting(name string) string {
    return "Bonjour, " + name + "!"
}

func main() {
    // 调用Greet,并将不同的函数作为参数传递
    Greet("John", EnglishGreeting)
    Greet("Alice", FrenchGreeting)
}

在上面的示例中,我们首先定义了一个函数类型MyFunc,它接受一个字符串参数并返回一个字符串。然后,我们定义了两个函数EnglishGreetingFrenchGreeting,它们符合MyFunc函数类型的签名。

最后,在main函数中,我们通过调用Greet函数并将不同的函数作为参数传递,来展示了如何在Go中将任意函数作为参数传递。在每次调用Greet时,根据传递的函数参数,它会执行不同的函数逻辑并输出相应的问候语。