共计 1513 个字符,预计需要花费 4 分钟才能阅读完成。
一、介绍。
go 语言的函数参数,个别咱们罕用的是,一个理论的值,比方 int,或者 struct,map,指针等。
但在一些高阶的用法中,常见函数,作为参数,比方 net/http 库等。明天咱们学一下如何应用函数作为函数的参数。
二、入门应用。
其实说白了,函数为参数,被另一个函数应用。就是 函数调用函数
咱们在一个函数内,调用另外一个函数。
2.1 应用一个 最简略的 无参,无返回函数。
在这里,咱们参数为 printOne()或 printTwo()。
咱们在 funcNoParam 中应用它。
func printOne() {fmt.Println("one")
}
func printTwo() {fmt.Println("two")
}
func funcNoParam(f func()) {f()
}
func TestFuncNoParam(t *testing.T) {funcNoParam(printOne)
funcNoParam(printTwo)
}
在下面的示例中,咱们应用 printOne 以及 printTwo 作为 funcNoParam 的参数。
执行完后果为:
=== RUN TestFuncNoParam
one
two
--- PASS: TestFuncNoParam (0.00s)
能够只有合乎 func()
, 咱们就能够传进到funcNoParam(f func())
中。
能够执行无数种函数调用。
2.2 调用一个有参函数
在这里 printOneParam(p int),printOnePlus(p int), 都是为一个参数的函数。
printOneParam(p int) 为间接打印出一个 p 值
printOnePlus(p int) 为打印出一个 p++ 值
咱们应用 funcParamOne(f func(a int))来把他们作为一个参数传进来,供本人调用。
func printOneParam(p int) {fmt.Println(p)
}
func printOnePlus(p int) {fmt.Println(p + 1)
}
func funcParamOne(f func(a int)) {
num := 100
f(num)
}
func TestFuncParamOne(t *testing.T) {funcParamOne(printOneParam)
funcParamOne(printOnePlus)
}
在这里,咱们定义了一个函数 funcParamOne(f func(a int))
它的参数是一个带有一个 int 参数的函数,咱们在 funcParamOne 调用了 f。
而后咱们咱们调用了两个合乎 func(a int)
类型的函数,printOneParam 以及 printOnePlus。
后果为:
=== RUN TestFuncParamOne
100
101
--- PASS: TestFuncParamOne (0.00s)
2.3 调用一个有返回值函数
func funcInt64(f func() int64) string {return fmt.Sprintf("string 之为: %d", f())
}
func TestFuncInt64(t *testing.T) {t.Log(funcInt64(rand.Int63))
t.Log(funcInt64(time.Now().Unix))
}
在这里,咱们调用了 rand.Int63(),以及 time.Now().Unix()
输入后果:
=== RUN TestFuncInt64
string 之为: 5577006791947779410
string 之为: 1676257027
--- PASS: TestFuncInt64 (0.00s)
留神,咱们调用函数的时候,都没有加上()
,是因为在外面咱们加上了括号,不然就两个括号了。
正文完