从map的源代码定义看,map是通过2个struct实现的
vlib/builtin/map.v
map定义
mut m := map[string]int{}
m['one'] = 1
m['two'] = 2
println(m['one']) //返回对应的value
println(m['bad_key']) // 如果指定key不存在,返回0
}
string类型的key
map[string]int
map[string]User
map[string][]int
非string类型的key
fn main() {
m := map {'one':1,'two':2,'three':3}
m2 := map {1 :'a', 2 :'b', 3 :'c'}
println(m)
println(m2)
}
map.len返回字典的大小
mut m := map[string]int{}
m['one'] = 1
m['two'] = 2
println(m.len) // 返回2
判断某一个元素是否包含在map的key中
遍历map
fn main() {
mut m := map[string]int{}
m['one'] = 1
m['two'] = 2
m['three'] = 3
for key, value in m {
println('key:$key,value:$value')
}
for key, _ in m {
println('key:$key')
}
for _, value in m {
println('value:$value')
}
}
module main
sm := {
'abc': 'xyz'
val := sm['bad_key']
println(val) // 如果字典元素不存在,会返回该类型的默认值:空字符串
intm := {
1: 1234
2: 5678
}
s := intm[3]
println(s) // 如果字典元素不存在,会返回该类型的默认值:0
//也可以加上or代码块来进行错误处理
mm := map[string]int{}
val2 := mm['bad_key'] or { panic('key not found') }
println(val2)
myfn()
}
fn myfn() ? {
mm := map[string]int{}
x := mm['bad_key']? //也可以本层级不处理,向上抛转错误
println(x)
if条件语句判断字典成员是否存在
更多字典相关的函数,参考