关于slice
我们都知道slice是在通过参数传递的时候传递的是引用
slice的appen操作是有返回值的,并不改变原值
例如
b := []int {1,2,3,4} c:=append(b, 5) // b 不变
另外,在使用make方法建立slice的时候,make([]int,0,3),这里第二个参数代表len,第三个参数代表cap,第三个参数可以省略。如果省略,两个就都是0
闭包和go
注意闭包都是引用传递
a := [3]string {"a","b","c"} func (){a[1] = "gg"}() fmt.Println(a)
a := []string {"a","b","c"} for _,v := range a { func (){ fmt.Println(v) }() }
s := []string{"a","b","c"} for _,v := range s{ go func(){ fmt.Println(v)} }() // 这种情况下打印的都是ccc // 如果想打印abc需要传递参数