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

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

Susan Sarandon
发布: 2024-12-03 19:55:10
原创
630 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板