Cắt lại slice
Bài học 6 trên 21 trong khóa học Slice và map trong Go của Coddy.
Go có một tính năng gọi là cắt lại, nghĩa là thực hiện thêm một lần cắt trên lát con. Hãy xem ví dụ sau để hiểu rõ hơn:
s := []string{"games", "coffee", "code", "play", "walk", "read", "learn"}Ở đây, ta định nghĩa một lát gồm 7 phần tử. Hãy cắt lát này để lấy 4 phần tử đầu tiên trong số 7 phần tử:
s := []string{"games", "coffee", "code", "play", "walk", "read", "learn"}
newS := s[0:4]
fmt.Println(newS)Kết quả trả về là một lát gồm 4 phần tử:
[games coffee code play]Cắt lại là khả năng thực hiện thêm một lần cắt trên lát newS như sau:
s := []string{"games", "coffee", "code", "play", "walk", "read", "learn"}
newS := s[0:4]
fmt.Println("Slicing: ", newS)
newS2 := newS[2:]
fmt.Println("Reslicing: ", newS2)Kết quả là:
Slicing: [games coffee code play]
Reslicing: [code play]Lưu ý rằng khi cắt, ta có thể truy cập các phần tử trong lát bằng chỉ số. Ví dụ:
s := []string{"games", "coffee", "code", "play", "walk", "read", "learn"}
newS := s[0:4]
fmt.Println("Slicing: ", newS)
fmt.Println(newS[2])Trong ví dụ này, ta lấy phần tử ở chỉ số 2:
Slicing: [games coffee code play]
codeTương tự, ta có thể sửa giá trị:
s := []string{"games", "coffee", "code", "play", "walk", "read", "learn"}
newS := s[0:4]
fmt.Println("Slicing: ", newS)
fmt.Println("Before Modification :", newS[2])
newS[2] = "sleep"
fmt.Println("After Modification :", newS[2])Đầu ra sẽ là:
Slicing: [games coffee code play]
Before Modification : code
After Modification : sleepTương tự, ta cũng có thể thêm phần tử vào lát:
newS := s[0:4]
fmt.Println("Slicing: ", newS)
newS = append(newS, "sleep")
fmt.Println("After Modification :", newS)Kết quả sẽ là:
Slicing: [games coffee code play]
After Modification : [games coffee code play sleep]Thử thách
DễTrong đoạn code đã cho, chúng ta định nghĩa một lát cắt có kiểu chuỗi.
- Tạo một lát cắt khác có tên "fruits" và lưu năm phần tử cuối cùng của lát cắt đã cho vào đó.
- In lát cắt "fruits" ra màn hình.
- Thêm hai phần tử vào lát cắt "fruits":
<strong>"pear"</strong>và<strong>"pineapple"</strong>. - In lát cắt "fruits" đã cập nhật.
Tự làm thử
package main
import "fmt"
func main() {
// Định nghĩa lát cắt
str:= []string{"apple", "banana", "cherry", "date", "fig", "grape", "kiwi", "lemon", "mango"}
// Lấy 5 phần tử cuối cùng
// In lát cắt ra màn hình
// Thêm hai phần tử vào lát cắt
// In lát cắt 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