在 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
,它接受一个字符串参数并返回一个字符串。然后,我们定义了两个函数EnglishGreeting
和FrenchGreeting
,它们符合MyFunc
函数类型的签名。
最后,在main
函数中,我们通过调用Greet
函数并将不同的函数作为参数传递,来展示了如何在Go中将任意函数作为参数传递。在每次调用Greet
时,根据传递的函数参数,它会执行不同的函数逻辑并输出相应的问候语。