分享
go语言渐入佳境[11]-function2
jonson_jackson · · 1092 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
匿名函数
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
// 计算阶乘 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
所有例子
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())
//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协议 许可协议。转载请注明出处!
image.png
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信1092 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
匿名函数
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
// 计算阶乘 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
所有例子
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())
//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协议 许可协议。转载请注明出处!
image.png