在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在go语言中的切片变量其实就是一个地址,我们先来看一段代码: func test_arr() { a := []int{1, 2, 3} var c [][]int b := a c = append(c, b) c = append(c, b) fmt.Println(c) c[0][0] = 9 fmt.Println(c) fmt.Println(a) change(a) fmt.Println(c) fmt.Println(b) } func change(cp []int) { cp[0] = 6 }
输出结果如下: 我们不难发现,在上面代码中,并不需要传递切片a的地址,就可以修改a中的值。在这种情况下,如果要拷贝一个新的切片对象的话,就需要使用go语言官方提供的一个内置函数copy(copy_slice,src_slice)。 使用示例: func test_arr() { a := []int{1, 2, 3} var c [][]int b := make([]int, len(a)) //使用copy函数必须复制切片的结构必须和源数据结构一致 copy(b, a) c = append(c, b) c = append(c, b) fmt.Println(c) c[0][0] = 9 fmt.Println(c) fmt.Println(a) change(a) fmt.Println(c) fmt.Println(b) } func change(cp []int) { cp[0] = 6 } 执行结果:
|
请发表评论