您所做的不是“清空”,而是创建一个新的片并将其分配给names。这完全可以。 请注意,如果代码的其他部分未使用切片,则将其重新切片为空会更有效: names = names[:0] 这样做可以避免不必要的分配,并且允许重用已经分配的片。在运动场上试试这个。 但是请注意,如果其他部分引用了names片,您可能希望像以前那样分配和分配一个新片,否则如果您只是重新划分它(如上所示),然后向它附加元素,这也会对其他片产生影响,因为这些片共享相同的备份数组(存储实际元素)。 请参见此示例: var names []stringnames = append(names, "John")names = append(names, "Mike")fmt.Println("names:", names)saved := namesfmt.Println("saved:", saved)fmt.Println("---")names = names[:0]names = append(names, "Mary")fmt.Println("names:", names)fmt.Println("saved:", saved) 它输出(在运动场上尝试): names: [John Mike]saved: [John Mike]---names: [Mary]saved: [Mary Mike] 如您所见,