参数的传递
- 值传递:传递的是数据的副本。修改数据,对于原始的数据没有影响。值类型的数据都是值传递:基本类型,array,struct
- 引用传递:传递的数据的地址,导致多个变量指向同一块内存。所有引用类型的数据,默认都是引用传递:slice,map,chan
package main
import "fmt"
func main() {
arr1:=[4]int{1,2,3,4}
fmt.Println("函数调用前,数组的数据:",arr1)
fun2(arr1)
fmt.Println("函数调用后,数组的数据:",arr1)
fmt.Println("************************")
s1:=[]int {1,2,3,4}
fmt.Println("函数调用前,切片的数据:",s1)
fun3(s1)
fmt.Println("函数调用后,切片的数据:",s1)
}
func fun2(arr2 [4]int ) {
fmt.Println("函数中,数组的数据:",arr2);
arr2[0]=100
fmt.Println("函数中,数组的数据修改后:",arr2)
}
func fun3(s2 []int) {
fmt.Println("函数调用中,切片的数据:",s2)
s2[0]=100
fmt.Println("函数中,切片数据修改后:",s2)
}

函数的返回值
package main
import "fmt"
func main() {
sum:=getSum2()
fmt.Println("1-10的和:",sum)
fmt.Println(getSum3())
}
func getSum2() int {
sum:=0;
for i:=1;i<=10;i++ {
sum+=i
}
return sum;
}
func getSum3()(sum int) {
fmt.Println("函数中:",sum)
return
}
