因为c和s底层指向的数组都是同一个。

slice的数据结构是:

由此可知,c := s,只是把 slice的结构体中的信息拷贝给了c,ptr指针指向的数组依然是同一个。所以s=append(s[:1],s[2:]...)相当于往底层的数组中存入数据,打印c的时候,就出现了{1, 3,3}


欢迎微信订阅 Go学堂, 会定期分享Go的基础知识以及架构。