关于slice
我们都知道slice是在通过参数传递的时候传递的是引用
slice的appen操作是有返回值的,并不改变原值
例如
b := []int {,,,}
c:=append(b, )
// b 不变
另外,在使用make方法建立slice的时候,make([]int,0,3),这里第二个参数代表len,第三个参数代表cap,第三个参数可以省略。如果省略,两个就都是0
闭包和go
注意闭包都是引用传递
a := []string {"a","b","c"}
func (){a[] = "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需要传递参数