// code_005_functions project main.go package main import ( "fmt" ) func Test1(a int, b, c string) (str3 string) { fmt.Printf("%d, %s, %s", a, b, c) return string(a) + b + c } func Test2() int { i := 1 sum := 0 for i = 1; i <= 100; i++ { sum += i } return sum } func Test3(num int) int { //递归函数的使用 if num == 1 { return 1 } return num + Test3(num-1) } //函数作为参数传递,我们使用type来定义 //它的类型就是所有拥有相同的参数,相同的返回值的一种类型。 type FuncType func(int, int) int //func后面没有函数名 func Calc(a, b int, f FuncType) (result int) { result = f(a, b) return } func Add(a, b int) int { return a + b } func Minus(a, b int) int { return a - b } func squares() func() int { var x int return func() int { //匿名函数 x++ //捕获外部变量 return x * x } } func main() { //关键func、函数名、参数列表、返回值、函数体和返回语句 //函数名首字母小写即为private,大写即为public //如果有返回值, 那么必须在函数的内部添加return语句 str1 := Test1(11, "你好", "世界") fmt.Println("\n" + str1) //递归函数 sum := Test3(100) fmt.Println(sum) //函数作为参数传递 res1 := Calc(10, 20, Add) res2 := Calc(100, 60, Minus) fmt.Println(res1) fmt.Println(res2) //匿名函数与闭包 //所谓闭包就是一个函数“捕获”了和它在同一作用域的其它常量和变量。 //这就意味着当闭包被调用的时候,不管在程序什么地方调用,闭包能够使用这些常量或者变量。 //它不关心这些捕获了的变量和常量是否已经超出了作用域,所以只有闭包还在使用它,这些变量就还会存在。 //在 Go 语言里,所有的匿名函数(Go语言规范中称之为函数字面量)都是闭包。 str := "ck_god" f1 := func() { //方式1: fmt.Printf("哈哈哈,我是%s\n", str) } f1() func() { //方式2:匿名函数 fmt.Println("不好意思,还是我") }() type FuncType func() var f2 FuncType = f1 f2() //方式3:函数变量接收后调用 v := func(a, b int) (result int) { result = a + b return }(1, 1) //方式4:有参有返回值的匿名函数 fmt.Println("v=", v) //闭包捕获外部变量特点:修改外部变量的值 fmt.Println("\n=========\n") i := 10 str2 := "ck_god" func() { i = 100 str = "go" fmt.Printf("内部:i = %d, str2 = %s\n", i, str2) }() fmt.Printf("外部:i = %d, str2 = %s\n", i, str2) //匿名函数作为返回值 f := squares() fmt.Println(f()) fmt.Println(f()) fmt.Println(f()) //我们看到变量的生命周期不由它的作用域决定:squares返回后,变量x仍然隐式的存在于f中 }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 017.Python函数匿名函数
- Python小世界:匿名函数、高阶函数、推导式
- [Introduction]匿名函数
- PHP匿名函数
- Java 8函数式编程模式:不要使用匿名函数
- python学习日记:day16-------内置函数与匿名函数
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
现代密码学理论与实践
毛文波 / 电子工业出版社 / 2004-1 / 49.00元
现代密码学理论与实践,ISBN:9787505399259,作者:(英)Wenbo Mao著;王继林,伍前红等译;王继林译一起来看看 《现代密码学理论与实践》 这本书的介绍吧!