将闭包作为函数的参数传递

将闭包作为函数的参数传递

本文介绍了将闭包作为函数的参数传递的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在此示例中: https://gobyexample.com/closures 如果我们更改:

From this example: https://gobyexample.com/closuresIf we change:

    fmt.Println(nextInt())
    fmt.Println(nextInt())
    fmt.Println(nextInt())

    fmt.Println(intSeq())
    fmt.Println(intSeq())
    fmt.Println(intSeq())

开始运行将失败,并显示错误: ./prog.go:32:5:Println arg intSeq()是一个函数值,未调用

go run will fail with error: ./prog.go:32:5: Println arg intSeq() is a func value, not called

但是从此示例开始: https://gobyexample.com/recursion

    fmt.Println(fact(7))

我们可以调用 fact(7)函数作为 fmt.Println 的参数.为什么我们有区别?

We can call fact(7) function as fmt.Println's argument. Why we have difference?

推荐答案

进行估算.当您在代码中运行Golang游乐场或任何测试时,首先运行 go vet ,如果返回错误,则实际的go代码不会运行.

To reckon.When you run Golang playground or any Test in your code, go vet run first and if it return with error the actual go code doesn't run.

如果您 go build go run (已通过1.12.5测试),则代码可以完美运行,并打印函数指针地址.

If you go build , or go run (tested with 1.12.5) the code run perfectly, printing the function pointer address.

如果您将代码复制到教程站点,请在这里 https://tour.golang.org/例如welcome/1 .代码按预期工作.

If you copy your code to the tutorial site, here https://tour.golang.org/welcome/1 for example. the code work as you expected.

这篇关于将闭包作为函数的参数传递的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 00:36