登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-04-25 10:26:03 368浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《函数可以作为参数传递吗?》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到golang等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

在Java中,我可以做类似的事情

derp(new Runnable { public void run () { /* run this sometime later */ } })

并稍后“运行”该方法中的代码。处理起来很痛苦(匿名内部类),但可以做到。

Go 是否有一些东西可以促进作为参数传入的函数/回调?

正确答案

是的,请考虑以下一些示例:

package main

import "fmt"

// convert types take an int and return a string value.
type convert func(int) string

// value implements convert, returning x as string.
func value(x int) string {
    return fmt.Sprintf("%v", x)
}

// quote123 passes 123 to convert func and returns quoted string.
func quote123(fn convert) string {
    return fmt.Sprintf("%q", fn(123))
}

func main() {
    var result string

    result = value(123)
    fmt.Println(result)
    // Output: 123

    result = quote123(value)
    fmt.Println(result)
    // Output: "123"

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

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

    _ = convert(foo) // confirm foo satisfies convert at runtime

    // fails due to argument type
    // _ = convert(func(x float64) string { return "" })
}

播放:http ://play.golang.org/p/XNMtrDUDS0

游览:https ://tour.golang.org/moretypes/25 (函数闭包)

今天关于《函数可以作为参数传递吗?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表