Menu
CoddyTech

Cách dùng tập hợp trong Go

Thuộc phần Logic và luồng điều khiển trong hành trình GO của Coddy. Bài học 31 trên 68.

Go không có cấu trúc dữ liệu tập hợp được tích hợp sẵn như nhiều ngôn ngữ lập trình khác. Tuy nhiên, các nhà phát triển Go đã tạo ra một giải pháp tinh tế, dùng map để mô phỏng tập hợp. Cách làm này trở nên phổ biến đến mức được xem là cách viết Go chuẩn mực.

Idiom tập hợp trong Go dùng một map khi bạn chỉ quan tâm đến các khóa, không phải các giá trị. Vì cần lưu một thứ gì đó làm giá trị, các lập trình viên Go dùng một struct rỗng struct{}. Đây là mẫu cơ bản:

var mySet map[string]struct{}

Struct rỗng struct{} đặc biệt vì nó chiếm 0 byte bộ nhớ. Điều này khiến nó rất phù hợp với các tập hợp, nơi bạn chỉ cần theo dõi xem một thứ có tồn tại hay không mà không lãng phí bộ nhớ cho các giá trị vô nghĩa.

Cách tiếp cận này tận dụng tính chất cơ bản của khóa trong map: chúng phải là duy nhất. Khi thêm một mục vào tập hợp, thực chất bạn đang thêm một khóa vào map. Map tự động đảm bảo tính duy nhất, giúp tập hợp hoạt động đúng như mong muốn.

Trong các bài học tiếp theo, bạn sẽ học cách tạo, thao tác và làm việc với tập hợp bằng mẫu Go chuẩn này. Kỹ thuật này được sử dụng rộng rãi trong các codebase Go để theo dõi các phần tử duy nhất, triển khai thuật toán và giải quyết vấn đề cần kiểm tra nhanh một phần tử có thuộc tập hợp hay không.

Tự làm thử

Bài học này không có thử thách code.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch Go online