```````
testList := []uint16{1, 2, 3, 4}
myTest := testList //1.mytest 和 testList指向同一段
myTest = append(myTest, 9) //分离指向,所以在设计的时候最好给一个cap,不需要频繁的开辟内存
fmt.Println(testList)
```````
```go
testList := []uint16{1, 2, 3, 4}
fmt.Printf("%p\n", &testList)
myTest := &testList //1.mytest 和 testList指向同一段
fmt.Printf("%p\n", myTest)
*myTest = append(*myTest, 9) //分离指向,所以在设计的时候最好给一个cap,不需要频繁的开辟内存
fmt.Printf("%p\n", &myTest)
(*myTest)[0] = 9
fmt.Println(testList)
fmt.Println(*myTest)
0xc21000a020
0xc21000a020
0xc210000020
[9 2 3 4 9]
[9 2 3 4 9]
```
你是想要这个么?你如果想真正复用内存,就应该使用指针, 否则是做不到真正的复用的,在append之后不是改了原来复用内存的大小而是复制了一个全新的内存区域,而且频繁的开辟内存也不是什么坏事, 因为小对象在栈上的申请内存不需要GC回收.这样没啥不对,或许是为了内存安全.也许我确实不懂你在说什么,也难怪你不知道我在说什么...
#6
更多评论
<a href="/user/focusonline" title="@focusonline">@focusonline</a> 那请问range多重map[]map[]val呢,不注意么?
#2