二十五岁时我们都一样愚蠢、多愁善感,喜欢故弄玄虚,可如果不那样的话,五十岁时也就不会如此明智。
标题:Go 语言 - 闭包函数
Go 语言支持闭包函数,又称匿名函数
匿名函数是一个 "内联" 语句或表达式
匿名函数的优越性在于可以直接使用函数内的变量,不必申明
Go 语言使用
func()
定义匿名函数语法
Go 语言中定义闭包函数的语法格式如下
func([parameter_list]) [return_type] { // 函数体 }与一般函数的区别就是,闭包函数没有 函数名
范例
下面的范例,我们创建了一个函数 getSequence() 返回另外一个函数,该函数的目的是在闭包中递增 i 变量
/** * file: main.go * author: 简单教程(www.twle.cn) * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ package main import "fmt" func getSequence() func() int { i:=0 return func() int { i+=1 return i } } func main(){ /* nextNumber 为一个函数,函数 i 为 0 */ nextNumber := getSequence() /* 调用 nextNumber 函数,i 变量自增 1 并返回 */ fmt.Println(nextNumber()) fmt.Println(nextNumber()) fmt.Println(nextNumber()) /* 创建新的函数 nextNumber1,并查看结果 */ nextNumber1 := getSequence() fmt.Println(nextNumber1()) fmt.Println(nextNumber1()) }编译运行以上 Go 范例,输出结果如下
$ go run main.go 1 2 3 1 2