首页 >后端开发 >Golang >Go 函数可以作为参数传递吗?

Go 函数可以作为参数传递吗?

Susan Sarandon
Susan Sarandon原创
2024-12-03 19:55:10597浏览

Can Go Functions Be Passed as Parameters?

Go 中可以将函数作为参数传递吗?

Java 允许通过使用匿名内部类将函数作为参数传递。 Go 是否提供了类似的机制来促进此功能?

答案:

当然! Go 支持通过匿名函数和闭包将函数作为参数传递。以下是一些示例:

示例 1:

package main

import "fmt"

type convert func(int) string

func value(x int) string {
    return fmt.Sprintf("%v", x)
}

func quote123(fn convert) string {
    return fmt.Sprintf("%q", fn(123))
}

func main() {
    result := quote123(value)
    fmt.Println(result) // Output: "123"
}

在此示例中,convert 函数类型定义为采用整数并返回字符串。值函数通过返回输入整数的字符串表示形式来实现转换。 quote123 函数接受转换函数作为参数,并返回调用该函数结果的带引号字符串表示形式,值为 123。

示例 2:

package main

import "fmt"

func main() {
    result := quote123(func(x int) string { return fmt.Sprintf("%b", x) })
    fmt.Println(result) // Output: "1111011"
}

这里,一个匿名函数作为参数传递给 quote123 函数。匿名函数将输入整数转换为其二进制字符串表示形式。

示例 3:

package main

import "fmt"

func main() {
    foo := func(x int) string { return "foo" }
    result := quote123(foo)
    fmt.Println(result) // Output: "foo"
}

在本例中,命名函数 foo 被传递为quote123 的一个参数。 foo 函数只是为任何输入返回字符串“foo”。

这些示例演示了在 Go 中将函数作为参数传递的灵活性和强大功能,使您能够创建通用且可重用的代码。

以上是Go 函数可以作为参数传递吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn