Làm thế nào để đếm các mục trong bản đồ cờ vây?


89

Nếu tôi muốn đếm các mục trong cấu trúc bản đồ, tôi nên sử dụng câu lệnh nào? Tôi đã cố gắng sử dụng

for _, _ := range m {...}

nhưng có vẻ như cú pháp là sai.


2
Hơi lạc đề, bạn cũng có thể sử dụng for _ := range m {}, không cần hai đối số ở đó.
Elazar Leibovich

1
BTW, cả hai for _, _ := range m {...}for _ := range m {}sẽ không biên dịch b / c của :=, không thể được sử dụng với / _chỉ LHS. =phải được sử dụng trong trường hợp này thay thế.
zzzz

Câu trả lời:


176

Sử dụng len(m). Từ http://golang.org/ref/spec#Length_and_capacity

len(s)    string type      string length in bytes
          [n]T, *[n]T      array length (== n)
          []T              slice length
          map[K]T          map length (number of defined keys)
          chan T           number of elements queued in channel buffer

Dưới đây là một số ví dụ được chuyển từ tài liệu SO hiện đã ngừng hoạt động:

m := map[string]int{}
len(m) // 0

m["foo"] = 1
len(m) // 1

Nếu một biến trỏ đến một nilbản đồ, thì lentrả về 0.

var m map[string]int
len(m) // 0

Trích từ Bản đồ - Đếm các thành phần bản đồ . Tác giả ban đầu là Simone Carletti . Chi tiết phân bổ có thể được tìm thấy trên trang cộng tác viên . Nguồn được cấp phép theo CC BY-SA 3.0 và có thể được tìm thấy trong kho lưu trữ Tài liệu . Chủ đề tham chiếu ID: 732 và ID ví dụ: 2528.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.