1 package main
2
3 import "fmt"
4
5 func fun2(s2 []int) {
6 fmt.Println("函数中,切片的数据:", s2) // [1 2 3 4]
7 s2[0] = 100
8 fmt.Println("函数中,切片的数据更改后:", s2) // [100 2 3 4]
9 }
10 func fun1(arr2 [4]int) {
11 fmt.Println("函数中,数组的数据:", arr2) // [1 2 3 4]
12 arr2[0] = 100
13 fmt.Println("函数中,数组的数据修改后:", arr2) // [100 2 3 4]
14 }
15
16 func main() {
17
18 /*
19 数据类型:
20 一:按照数据类型来分:
21 基本数据类型:
22 int,float,string,bool
23 复合数据类型:
24 array,slice,map,struct,interface。。。。
25
26 二:按照数据的存储特点来分:
27 值类型的数据:操作的是数值本身。
28 int,float64,bool,string,array
29 引用类型的数据:操作的是数据的地址
30 slice,map,chan
31
32 参数传递:
33 A:值传递:传递的是数据的副本。修改数据,对于原始的数据没有影响的。
34 值类型的数据,默认都是值传递:基础类型,array,struct
35
36 B:引用传递:传递的是数据的地址。导致多个变量指向同一块内存。
37 引用类型的数据,默认都是引用传递:slice,map,chan
38
39 */
40
41 arr1 := [4]int{1, 2, 3, 4}
42 fmt.Println("函数调用前,数组的数据:", arr1) // [1 2 3 4]
43 fun1(arr1)
44 fmt.Println("函数调用后,数组的数据:", arr1) // [1 2 3 4]
45
46 fmt.Println("---------------------------------")
47
48 s1 := []int{1, 2, 3, 4}
49 fmt.Println("函数调用前,切片的数据:", s1) // [1 2 3 4]
50 fun2(s1)
51 fmt.Println("函数调用后,切片的数据:", s1) // [100 2 3 4]
52 }