在Go語言中,切片的擴容是通過使用內置函數append()來實現的。當切片的長度不夠容納新元素時,append()函數會創建一個新的底層數組,并將原有切片中的元素復制到新的底層數組中,然后返回一個新的切片,該切片的長度和容量都會發生改變。
以下是一個示例代碼,演示了如何使用append()函數擴容切片:
package main
import "fmt"
func main() {
// 創建一個初始長度為3的切片
s := []int{1, 2, 3}
fmt.Printf("初始切片: %v, 長度: %d, 容量: %d\n", s, len(s), cap(s))
// 添加一個元素,切片會擴容
s = append(s, 4)
fmt.Printf("添加元素后的切片: %v, 長度: %d, 容量: %d\n", s, len(s), cap(s))
// 添加多個元素,切片會根據需要進行擴容
s = append(s, 5, 6, 7)
fmt.Printf("添加多個元素后的切片: %v, 長度: %d, 容量: %d\n", s, len(s), cap(s))
}
運行以上代碼,輸出結果如下:
初始切片: [1 2 3], 長度: 3, 容量: 3
添加元素后的切片: [1 2 3 4], 長度: 4, 容量: 6
添加多個元素后的切片: [1 2 3 4 5 6 7], 長度: 7, 容量: 12
可以看到,使用append()函數向切片添加元素時,切片會根據需要自動進行擴容,并且擴容后的切片長度和容量會發生改變。