注意:go只有值传递!go只有值传递!go只有值传递!
你可会问,对于slice, map, channel,应该是引用。但其实不是,当将这三种数据结构作为参数传过去时, 你函数接收到的只是实参的地址的拷贝!注意,是拷贝。也就是说,当你在函数内部将形参新赋值给一个新的内存地址时,实参并不会改变。看代码
import "fmt" func test(s []int) { s = []int{2, 3} } func main() { s := []int{1, 2, 3} fmt.Println(s) }
输出结果: