匿名函数
package main import ( "fmt" "math" ) //匿名函数 func main(){ //无参匿名函数 func(){ fmt.Println("jonson") }() //有参匿名函数 func(data int){ fmt.Println("data:",data) }(5) //有返回值的匿名函数 result:=func(data float64) float64{ return math.Sqrt(data) }(9) fmt.Println("result:",result) //函数表达式 greet:=func(){ fmt.Println("greet jonson") } greet() fmt.Printf("greet的类型是%T\n",greet)
闭包
func greetjonson(){ x:=0 increment:= func() int{ x++ return x } fmt.Println(increment()) fmt.Println(increment()) }
函数作为返回值
func makeGreeter() func() string{ return func() string { return "hello jonson" } }
闭包与函数返回值
func makeEvenGenerator() func() int{ i:=0 return func() int{ i+=2 return i } }
callback函数作为参数
func visit(numbers []int,callback func(int)){ for _,n :=range numbers{ callback(n) } }
递归
// 计算阶乘 5 5*4*3*2*1 func factorial(x uint) uint{ if x==0{ return 1 } return x * factorial(x-1) } // factorial(5) //120 // returns: 5 * factorial(4) // factorial(4) /24 // returns: 4 * factorial(3) // factorial(3) //6 // returns: 3 * factorial(2) // factorial(2) //2 // returns: 2 * factorial(1) // factorial(1) //1 // returns: 1 * factorial(0) // factorial(0) // returns: 1
所有例子
package main import ( "fmt" "math" ) //匿名函数 func main(){ //无参匿名函数 func(){ fmt.Println("jonson") }() //有参匿名函数 func(data int){ fmt.Println("data:",data) }(5) //有返回值的匿名函数 result:=func(data float64) float64{ return math.Sqrt(data) }(9) fmt.Println("result:",result) greet:=func(){ fmt.Println("greet jonson") } greet() fmt.Printf("greet的类型是%T\n",greet) //闭包 greetjonson() //函数作为返回值 makejonson := makeGreeter() fmt.Printf("类型:%T,返回值:%v\n",makejonson,makejonson()) //闭包做为返回值 makeeven := makeEvenGenerator() fmt.Println("makeeven i = ",makeeven()) fmt.Println("makeeven i = ",makeeven()) fmt.Println("makeeven i = ",makeeven()) //callback函数作为参数 visit([]int{1,2,3,4},func(n int){ fmt.Println(n+1) }) //死循环 fmt.Println(factorial(5)) var i uint = 0 for ;i<20;i++{ fmt.Println(fabicc(i)) } } //闭包 func greetjonson(){ x:=0 increment:= func() int{ x++ return x } fmt.Println(increment()) fmt.Println(increment()) } //函数作为返回值 func makeGreeter() func() string{ return func() string { return "hello jonson" } } //闭包与函数返回值 func makeEvenGenerator() func() int{ i:=0 return func() int{ i+=2 return i } } //callback函数作为参数 func visit(numbers []int,callback func(int)){ for _,n :=range numbers{ callback(n) } } //递归 // 计算阶乘 5 5*4*3*2*1 func factorial(x uint) uint{ if x==0{ return 1 } return x * factorial(x-1) } //fabicc func fabicc(x uint) uint{ if(x==0){ return 0 } if(x==1){ return 1 } return fabicc(x-2) + fabicc(x-1) }
-
本文链接: https://dreamerjonson.com/2018/11/19/golang-11-function2/
-
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!
以上所述就是小编给大家介绍的《go语言渐入佳境[11]-function2》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别
- 计算机语言发展的三个阶段:机器语言、汇编语言与高级语言
- 凹 (“Wa”) 语言:可以嵌入 Go 语言环境的脚本语言
- Rust语言恰巧是一门解决了Go语言所有问题的语言
- 获取系统语言/当前 App支持语言
- 【Go 语言教程】Go 语言简介
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。