ถ้าฉันต้องการนับรายการในโครงสร้างแผนที่ฉันควรใช้คำสั่งใด? ฉันพยายามที่จะใช้
for _, _ := range m {...}
แต่ดูเหมือนว่าไวยากรณ์เป็นเท็จ
ถ้าฉันต้องการนับรายการในโครงสร้างแผนที่ฉันควรใช้คำสั่งใด? ฉันพยายามที่จะใช้
for _, _ := range m {...}
แต่ดูเหมือนว่าไวยากรณ์เป็นเท็จ
for _, _ := range m {...}และfor _ := range m {}จะไม่รวบรวม b / c ของ:=ซึ่งไม่สามารถใช้กับ_LHS เท่านั้น =ต้องใช้ในกรณีนี้แทน
คำตอบ:
ใช้len(m). จาก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
ต่อไปนี้เป็นตัวอย่างสองสามตัวอย่างที่ย้ายมาจากเอกสาร SO ที่เลิกใช้แล้วในขณะนี้:
m := map[string]int{}
len(m) // 0
m["foo"] = 1
len(m) // 1
หากตัวแปรชี้ไปที่nilแผนที่lenจะส่งกลับ 0
var m map[string]int
len(m) // 0
ตัดตอนมาจากแผนที่ - องค์ประกอบแผนที่นับ ผู้เขียนต้นฉบับเป็นSimone Carletti รายละเอียดการแสดงที่สามารถพบได้บนหน้าผู้สนับสนุน แหล่งที่มานี้ได้รับอนุญาตภายใต้CC BY-SA 3.0และสามารถพบได้ในเอกสารประกอบ หัวข้ออ้างอิง ID: 732 และ ID ตัวอย่าง: 2528
for _ := range m {}ไม่จำเป็นต้องมีข้อโต้แย้งสองข้อที่นั่น