匿名函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| 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)
|
闭包
1 2 3 4 5 6 7 8 9 10 11
| func greetjonson(){ x:=0
increment:= func() int{ x++ return x }
fmt.Println(increment()) fmt.Println(increment()) }
|
函数作为返回值
1 2 3 4 5 6
| func makeGreeter() func() string{
return func() string { return "hello jonson" } }
|
闭包与函数返回值
1 2 3 4 5 6 7
| func makeEvenGenerator() func() int{ i:=0 return func() int{ i+=2 return i } }
|
callback函数作为参数
1 2 3 4 5 6
| func visit(numbers []int,callback func(int)){
for _,n :=range numbers{ callback(n) } }
|
递归
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
func factorial(x uint) uint{
if x==0{ return 1 } return x * factorial(x-1) }
|
所有例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
| 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())
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 } }
func visit(numbers []int,callback func(int)){
for _,n :=range numbers{ callback(n) } }
func factorial(x uint) uint{
if x==0{ return 1 } return x * factorial(x-1) }
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协议 许可协议。转载请注明出处!
转载于:https://blog.51cto.com/13784902/2326144