函数的本质
# 一、函数的本质
# 函数
- 加(),调用
# 注意点
- 函数作为一种复合数据类型,可以看做是一种特殊的变量.
- 函数名(): 将函数进行调用,函数中的代码会全部执行,然后将
return
的结果返回给调用处 - 函数名: 指向函数体的内存地址
# 示例代码
package main
import "fmt"
func main() {
/*
Go语言的数据类型:
数值类型: 整数,浮点
进行运算操作,加减乘除,打印
字符串:
可以获取单个字符串,截取子串,遍历,strings包下的函数操作...
数组,切片,map...
存储数据,修改数据,获取数据,遍历数据...
函数:
加(),进行调用
注意点:
函数作为一种复合数据类型,可以看做是一种特殊的变量.
函数名(): 将函数进行调用,函数中的代码会全部执行,然后将return的结果返回给调用处
函数名: 指向函数体的内存地址
*/
// 1.整数
a := 10
// 运算
a += 5
fmt.Println("a:", a)
//2.数组,切片,map...,容器
b := [4]int{1, 2, 3, 4}
b[0] = 100
for i := 0; i < len(b); i++ {
fmt.Printf("%d\t", b[i])
}
fmt.Println()
//3.函数做一个变量
fmt.Printf("%T\n", fun1)
fmt.Println(fun1) //fun1()-fun1 0xe4cee0,看做函数名对应的函数体的地址
//4.直接定义一个函数类型的变量
var c func(int, int)
fmt.Println(c) // <nil> 空
c = fun1 //将fun1的值(函数体的地址)赋值给c
fmt.Println(c)
fun1(10, 20)
c(100, 200)
res1 := fun2 //将fun2的值(函数的地址)赋值给res1,res1和fun2指向同一个函数体
res2 := fun2(1, 2) // 将fun2函数进行调用,将函数的执行结果赋值给res2,相当于: a+b
fmt.Println(res1)
fmt.Println(res2)
}
func fun2(a, b int) int {
return a + b
}
func fun1(a, b int) {
fmt.Printf("a:%d,b:%d\n", a, b)
}
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
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
上次更新: 2024/04/09, 16:48:42
- 01
- AWS NAT-NetWork-Firwalld配置(一)04-09
- 02
- AWS NAT-NetWork-Firwalld配置(二)04-09
- 03
- kubernetes部署minio对象存储01-18