关于go:go语法入门将函数作为函数的参数

一、介绍。

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)

留神,咱们调用函数的时候,都没有加上(),是因为在外面咱们加上了括号,不然就两个括号了。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理