dajunx 发表于 2018-12-7 22:57:53

go语言 函数的例子

以前学习c语言的时候,觉得c语言写的玩意儿就是一堆函数的相互嵌套,想想头大,后来学c++后,发现类也是个好东西,可以抽象很多概念
如下是go的函数例子,相对而言比c++这种古老级语言,花花肠子更多,如下:
package basicuse

import (
        "fmt"
        "math"
)

func adder() func(int) int {
        sum := 0
        return func(x int) int {
                sum += x
                return sum
        }
}

//TestReturnFunction 函数返回函数,函数也是一种值
func TestReturnFunction() {
        //函数也是值
        hypot := func(x, y float64) float64 {
                return math.Sqrt(x*x + y*y)
        }

        fmt.Println(hypot(3, 4))

        // 函数的闭包
        //TODO 函数的闭包的理解
        fmt.Println(" function-value 闭包")
        pos, neg := adder(), adder()
        for i := 0; i < 10; i++ {
                fmt.Println(
                        pos(i),
                        neg(-2*i),
                )
        }
}
页: [1]
查看完整版本: go语言 函数的例子