Một lát là một khái niệm trừu tượng mà sử dụng một mảng trong chăn.
cap
cho bạn biết dung lượng của mảng cơ bản. len
cho bạn biết có bao nhiêu mục trong mảng.
Sự trừu tượng hóa slice trong Go rất đẹp vì nó sẽ thay đổi kích thước mảng bên dưới cho bạn, cộng với mảng Go không thể thay đổi kích thước để lát hầu như luôn được sử dụng thay thế.
Ví dụ:
s := make([]int, 0, 3)
for i := 0; i < 5; i++ {
s = append(s, i)
fmt.Printf("cap %v, len %v, %p\n", cap(s), len(s), s)
}
Will ra một cái gì đó như thế này:
cap 3, len 1, 0x1040e130
cap 3, len 2, 0x1040e130
cap 3, len 3, 0x1040e130
cap 8, len 4, 0x10432220
cap 8, len 5, 0x10432220
Như bạn có thể nhìn thấy một lần khả năng được đáp ứng, append
sẽ trở lại một lát mới với công suất lớn hơn. Trong lần lặp thứ tư, bạn sẽ thấy một dung lượng lớn hơn và một địa chỉ con trỏ mới.
Play example
Tôi nhận ra rằng mình đã không hỏi về mảng và thêm nhưng họ là khá căn bản trong việc tìm hiểu lát và lý do cho các lệnh nội trú.
Bạn đã thực hiện ngay cả một số tiền tối thiểu của nghiên cứu trước khi yêu cầu? Chỉ googling cho các từ khóa chắc chắn sẽ mang lại [điều này đi về bài viết về chủ đề] (https://blog.golang.org/go-slices-usage-and-internals) giải thích tất cả những gì bạn hỏi về. – kostix