兄弟们实锤了奥,go 就是值传递,可以确认的是 Go 语言中所有的传参都是值传递(传值),都是一个副本,一个拷贝。因为拷贝的内容有时候是非引用类型( int 、string 、struct 等这些),这样就在函数中就无法修改原内容数据;有的是引用类型(指针、map 、slice 、chan 等这些),这样就可以修改原内容数据。
是否可以修改原内容数据,和传值、传引用没有必然的关系。在 C++中,传引用肯定是可以修改原内容数据的,在 Go 语言里,虽然只有传值,但是我们也可以修改原内容数据,因为参数是引用类型。
有的小伙伴会在这里还是懵逼,因为你把引用类型和传引用当成一个概念了,这是两个概念,切记!!!
是否可以修改原内容数据,和传值、传引用没有必然的关系。在 C++中,传引用肯定是可以修改原内容数据的,在 Go 语言里,虽然只有传值,但是我们也可以修改原内容数据,因为参数是引用类型。
有的小伙伴会在这里还是懵逼,因为你把引用类型和传引用当成一个概念了,这是两个概念,切记!!!