Go 语言函数作为实参
Go 函数
Go 语言可以很灵活的创建函数,并作为另外一个函数的实参。以下实例中我们在定义的函数中初始化一个变量,该函数仅仅是为了使用内置函数 math.sqrt(),实例为:
实例
package main
import (
"fmt"
"math"
)
func main(){
/* 声明函数变量 */
getSquareRoot := func(x float64) float64 {
return math.Sqrt(x)
}
/* 使用函数 */
fmt.Println(getSquareRoot(9))
}
以上代码执行结果为:
3
Go 函数
ABC123
abc***c.com
函数作为参数传递,实现回调。
package main import "fmt" // 声明一个函数类型 type cb func(int) int func main() { testCallBack(1, callBack) testCallBack(2, func(x int) int { fmt.Printf("我是回调,x:%d\n", x) return x }) } func testCallBack(x int, f cb) { f(x) } func callBack(x int) int { fmt.Printf("我是回调,x:%d\n", x) return x }ABC123
abc***c.com
最近很帅
kai***gtingting@qq.com
把楼上的再写简单点,实际就是把函数作为参数传递进去了。
package main import "fmt" // 声明一个函数类型 type cb func(int) int func main() { testCallBack(1, callBack)//执行函数---testCallBack } func testCallBack(x int, f cb) { //定义了一个函数 testCallBack f(x) //由于传进来的是callBack函数,该函数执行需要传入一个int类型参数,因此传入x } func callBack(x int) int { fmt.Printf("我是回调,x:%d\n", x) return x }最近很帅
kai***gtingting@qq.com
Go,勇往直前
227***1301@qq.com
匿名函数:
package main import "fmt" var ( myRes = func (a int, b int) int { return a - b } ) func main(){ //匿名函数,只调用一次,定义时直接调用 res1 := func (a int, b int) int { return a + b }(10,25) fmt.Printf("res1 =%d\n", res1) //匿名函数赋给变量用变量来调用,可多次使用,但作用域有限 res2 := func (a int, b int) int { return a * b } res3 := res2(10,25) fmt.Printf("res3 =%d\n", res3) //将匿名函数用全局变量接收,则该函数为全局匿名函数 res4 := myRes(10,25) fmt.Printf("res4 =%d\n", res4) }Go,勇往直前
227***1301@qq.com