go 速学 - 09 - 函数
目录
摘要
定义函数,多个返回值,命名返回值,变参,闭包,柯理化
函数
特点
- 不支持嵌套,重载和默认参数
- 支持闭包
定义函数
//单个返回值,可以省略括号
func test0(a int, b string) int {
return a
}
//多个返回值
func test1(a int, b string) (int, string) {
return a, b
}
//无返回值
func test2(a int, b string) {}
//参数简写
func test3(a, b int) {}
可以对返回值进行命名,这样 return 的时候就不用一一指定了
//命名返回值
func test4() (a, b, c int) {
a, b, c = 1, 2, 3
return
//或
//return a,b,c
}
变参
func args(a ...int) {
for i, v := range a {
fmt.Println(i, v)
}
}
闭包与柯理化
闭包
func closure(s []func()) {
for i := 0; i < 5; i++ {
s[i] = func() {
fmt.Println(i)
}
}
}
s := make([]func(), 5)
closure(s)
for i, v := range s {
fmt.Print(i, ",")
v()
}
//0,5
//1,5
//2,5
//3,5
//4,5
柯理化
func curry(x int) func(int) int {
return func(y int) int {
return x + y
}
}
adder := curry(2)
fmt.Println(adder, adder(3)) //0x2950 5
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。