Slices trong Golang: Cách sử dụng và ví dụ
Bài viết này hướng dẫn cách sử dụng `slices` trong Golang, bao gồm cách khai báo, truy cập, và thao tác với slices - một tính năng linh hoạt giúp quản lý mảng hiệu quả hơn trong Go.
Trong Golang, slices là một phần đặc biệt của mảng, cho phép bạn làm việc với các phân đoạn của mảng mà không cần tạo ra bản sao của nó. Slices linh hoạt và dễ quản lý hơn so với mảng truyền thống, đặc biệt khi bạn cần thao tác với các dữ liệu động.
Mã Golang:
package main
import "fmt"
func main() {
// Khai báo mảng ban đầu
arr := [5]int{1, 2, 3, 4, 5}
// Tạo slice từ mảng arr
slice := arr[1:4]
// In ra các phần tử của slice
fmt.Println("Slice:", slice)
// Thay đổi phần tử của slice
slice[0] = 10
// In ra mảng ban đầu sau khi thay đổi slice
fmt.Println("Mảng ban đầu:", arr)
// Thêm phần tử vào slice bằng cách sử dụng append
slice = append(slice, 6)
// In ra slice sau khi append
fmt.Println("Slice sau khi append:", slice)
}
Giải thích chi tiết từng dòng code:
arr := [5]int{1, 2, 3, 4, 5}
: Tạo một mảng có 5 phần tử.slice := arr[1:4]
: Tạo một slice từ mảngarr
, lấy các phần tử từ vị trí 1 đến 3 (không bao gồm vị trí 4).fmt.Println("Slice:", slice)
: In ra các phần tử của slice.slice[0] = 10
: Thay đổi giá trị phần tử đầu tiên của slice.fmt.Println("Mảng ban đầu:", arr)
: In ra mảng ban đầu để thấy rằng slice thực sự chia sẻ dữ liệu với mảng.slice = append(slice, 6)
: Thêm một phần tử mới vào slice bằng hàmappend
.fmt.Println("Slice sau khi append:", slice)
: In ra slice sau khi thêm phần tử mới.
Lời khuyên:
- Slices chia sẻ bộ nhớ với mảng ban đầu, do đó, nếu bạn thay đổi giá trị trong slice, mảng cũng sẽ bị ảnh hưởng.
- Khi sử dụng
append
, nếu slice không đủ bộ nhớ, nó sẽ tạo một mảng mới để lưu trữ dữ liệu.