一、函数参数传递方式
函数参数传递有2种方式:值传递和引用传递。
值传递是指调用函数时将参数值复制一份到函数,如果对函数参数进行修改,影响不到实际参数。
引用传递是指调用函数时将参数的指针传递到函数中,函数中对参数的修改,将影响到实际参数。
不同编程语言的函数参数传递方式不尽相同,例如C语言中的int、float等参数类型采用值传递的方式,而数组类型默认为引用传递,C++中的引用传递显而易见,其类型系统直接包含了引用类型。
二、Go语言中的函数传递方式
那么Go语言何种参数传递方式呢?开门见山,直接上官方说法“Go语言函数传递方式都是值传递”。int64、string等类型采用值传递比较好理解,但是为什么说slice、interface、map和channel类型也是值传递呢?先看个例子1:
package main
import "fmt"
func fun0(slice0 []int) {
slice0 = append(slice0, 2)
fmt.Println("func0 : ", slice0)
}
func main() {
slice0 := []int{
1}
fun0(slice0)
fmt.Println("main : ", slice0)
}
打印结果:
func0 : [1 2]
main : [</