go的匿名函数和闭包
webyh · · 10500 次点击 · · 开始浏览go的匿名函数:
func no_func() {
// 匿名函数 1
f := func(i, j int) (result int) { // f 为函数地址
result = i + j
return result
}
fmt.Fprintf(os.Stdout, "f = %v f(1,3) = %v\n", f, f(1, 3))
// 匿名函数 2
func(i, j int) (m, n int) { // x y 为函数返回值
return j, i
}(1, 9) // 直接创建匿名函数并执行
}
go的闭包:
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
func main() {
pos, neg := adder(), adder()
for i := 0; i < 10; i++ {
fmt.Println(
pos(i),
neg(-2*i),
)
}
}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
go的匿名函数:
func no_func() {
// 匿名函数 1
f := func(i, j int) (result int) { // f 为函数地址
result = i + j
return result
}
fmt.Fprintf(os.Stdout, "f = %v f(1,3) = %v\n", f, f(1, 3))
// 匿名函数 2
func(i, j int) (m, n int) { // x y 为函数返回值
return j, i
}(1, 9) // 直接创建匿名函数并执行
}
go的闭包:
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
func main() {
pos, neg := adder(), adder()
for i := 0; i < 10; i++ {
fmt.Println(
pos(i),
neg(-2*i),
)
}
}