指针与引用的区别。由new生成的指针指向了特定的内存,它是不变的。而由make生成的内存块大小是可变的,当切片的增长超出了cap指定的大小时,将会重新分配一块更大的内存并将原切片内容复制过去,切片指向了新的内存块,切片原来的内存将会释放并回收。所以切片指向的内存地址是会变的。如果这一切还象指针那样由程序员来管理,难度是很大的。好在GO语言中这一切由系统来自动管理,程序员使用切片的名字来引用特定的内容,而不需要知道它们变动到了实际内存的哪块位置。引用的实质是用名字操作代替了指针操作,从而屏蔽与简化了这背后的指针操作复杂性。
有疑问加站长微信联系(非本文作者)