Trung BìnhGolang iconGolang

Range loop trong Go dùng thế nào?

range là cú pháp duy nhất để iterate qua collection trong Go, hoạt động khác nhau theo từng kiểu dữ liệu:

  • Slice / array: for i, v := range slice { } — trả về index và value.
  • Map: for k, v := range m { } — trả về key và value, thứ tự không xác định.
  • String: for i, r := range "hello" { } — trả về byte index và rune (Unicode code point).
  • Channel: for v := range ch { } — đọc đến khi channel close.
  • Integer (Go 1.22+): for i := range 10 { } — range over integer, tương đương for i := 0; i < 10; i++.
  • Bỏ qua giá trị: dùng blank identifier — for _, v := range items { }.

Pitfall: range copy value sang biến loop, không phải reference. Nếu cần mutate phần tử, dùng slice[i] thay vì v.

Xem toàn bộ Golang cùng filter theo level & chủ đề con.

Mở danh sách Golang