ถ้าฉันต้องการนับรายการในโครงสร้างแผนที่ฉันควรใช้คำสั่งใด? ฉันพยายามที่จะใช้
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 {}
ไม่จำเป็นต้องมีข้อโต้แย้งสองข้อที่นั่น