年度最佳【golang】map详解

去去1002 ·
makemap 和 makeslice 的区别,带来一个不同点:当 map 和 slice 作为函数参数时,在函数参数内部对 map 的操作会影响 map 自身;而对 slice 却不会(之前讲 slice 的文章里有讲过)。 对这段话有点疑问,下面的代码函数f对slice 的改变已经影响到了函数f外面的值,这怎么解释呢? ``` package main import ( "fmt" ) func main() { s := []string{"a", "b"} f(s) fmt.Println(s) } func f(s []string) { s[0] = "aaaaaaaaaaaaa" } ```
#1
更多评论
slice由一个指向某数组的指针、len、cap组成,当作为函数参数使用时,虽然是副本,但是指针指向的是同一个数组,所以你改变了数组元素,原来的slice指向的数组当然会改变。但是makeslice仅仅会对slice的len、cap操作,当然不会影响原来的slice。
#2