【Go - 常见的5类函数用法】
函数
函数通过func
关键字定义,后跟函数名、参数列表、返回类型。语法如下:
func functionName(parameters) returnType {
// 函数体
}
示例
func add(x int, y int) int {
return x + y
}
func swap(x, y string) (string, string) {
return y, x
}
变参函数
func sum(nums ...int) int {
total := 0
for _, num := range nums {
total += num
}
return total
}
匿名函数
s := (func () string {
return "anonymous-function"
})()
fmt.Println(s)
**高阶函数,**函数作为参数和返回值
函数也可以作为参数传入 或者 作为返回值传出
// 函数作为参数
func compute(fn func(float64, float64) float64) float64 {
return fn(3, 4)
}
// 函数作为返回值
func getComputeFunc() func(int, int) int {
return func(x, y int) int {
return x + y
}
}
闭包
func intSeq() func() int {
i := 0
return func() int {
i++
return i
}
}
// 调用
func main() {
incfunc := intSeq()
fmt.Println(incfunc())
fmt.Println(incfunc())
}
闭包本质是对作用域的延伸。
就比如intSeq中的i,如果没有其它地方引用,其会被垃圾回收,但是由于incfunc中有对其的引用,其不能被回收,其生命周期变长了,作用域延伸了。
原文地址:https://blog.csdn.net/qq_38428433/article/details/140310071
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!