Thêm phần tử vào slice
Bài học 3 trên 21 trong khóa học Slice và map trong Go của Coddy.
Trong các bài học trước, chúng ta đã thảo luận rằng điểm khác nhau giữa lát cắt và mảng nằm ở kích thước của chúng, điều này thể hiện rõ khi kiểm tra độ dài.
Ví dụ, nếu ta định nghĩa một lát cắt như sau:
nums := []int{23, 5, 6}Lát cắt có ba phần tử, và khi kiểm tra độ dài bằng hàm <strong>len()</strong>, ta nhận được 3:
nums := []int{23, 5, 6}
fmt.Println(len(nums)) // 3Nếu thêm phần tử vào lát cắt rồi kiểm tra kích thước, ta sẽ nhận được kích thước mới:
nums := []int{23, 5, 6, 9, 22}
fmt.Println(len(nums)) // 5Ngược lại, mảng có kích thước cố định. Ví dụ:
nums := [4]int{23}
fmt.Println(len(nums)) // 4Dù có ít hơn 4 phần tử, độ dài vẫn cố định.
Ta thêm phần tử vào lát cắt bằng <strong>append</strong>:
books := []string{"Python", "Rust"}
books = append(books, "Golang")
fmt.Println(books)Khi chạy, ta nhận được:
[Python Rust Golang]Trong Golang, lát cắt có các hàm tích hợp sẵn, và <strong>append()</strong> là một trong số đó, cho phép ta thêm phần tử mới vào lát cắt hiện có.
Lưu ý rằng do lát cắt có kích thước động, ta không thể dùng chỉ số để thêm phần tử (
<strong>books[2] = "Golang"</strong>sẽ không hoạt động).
Thử thách
DễViết chương trình nhận 3 đầu vào từ người dùng và thêm chúng vào lát cắt có tên <strong>coddy</strong> như được định nghĩa trong đoạn code đã cho. Thực hiện các bước sau:
- In ra độ dài của lát cắt trước khi thêm phần tử.
- Thêm phần tử vào lát cắt.
- In ra lát cắt và độ dài đã cập nhật sau khi thêm phần tử (trên các dòng riêng biệt).
Tự làm thử
package main
import "fmt"
func main() {
// Nhận đầu vào từ người dùng. Đừng thay đổi phần này!
var first, second, third string
fmt.Scan(&first)
fmt.Scan(&second)
fmt.Scan(&third)
// Định nghĩa slice
coddy := []string {"SQL","Rust","C#","Golang"}
// In ra độ dài
// Thêm phần tử vào slice
// In ra slice và độ dài sau khi cập nhật
}Tất cả bài học trong Slice và map trong Go
1Giới thiệu
Giới thiệu3Slice phía sau hậu trường
Slice là một mảngTạo slice bằng makeSao chép sliceXóa một phần tửThử thách ôn tập #1Thử thách ôn tập #2Tự luyện tập: Trình biên dịch Go online