从map的源代码定义看,map是通过2个struct实现的

    vlib/builtin/map.v

    map定义

    1. mut m := map[string]int{}
    2. m['one'] = 1
    3. m['two'] = 2
    4. println(m['one']) //返回对应的value
    5. println(m['bad_key']) // 如果指定key不存在,返回0
    6. }

    string类型的key

    1. map[string]int
    2. map[string]User
    3. map[string][]int

    非string类型的key

    1. fn main() {
    2. m := map {'one':1,'two':2,'three':3}
    3. m2 := map {1 :'a', 2 :'b', 3 :'c'}
    4. println(m)
    5. println(m2)
    6. }

    map.len返回字典的大小

    1. mut m := map[string]int{}
    2. m['one'] = 1
    3. m['two'] = 2
    4. println(m.len) // 返回2

    判断某一个元素是否包含在map的key中

    遍历map

    1. fn main() {
    2. mut m := map[string]int{}
    3. m['one'] = 1
    4. m['two'] = 2
    5. m['three'] = 3
    6. for key, value in m {
    7. println('key:$key,value:$value')
    8. }
    9. for key, _ in m {
    10. println('key:$key')
    11. }
    12. for _, value in m {
    13. println('value:$value')
    14. }
    15. }
    1. module main
    2. sm := {
    3. 'abc': 'xyz'
    4. val := sm['bad_key']
    5. println(val) // 如果字典元素不存在,会返回该类型的默认值:空字符串
    6. intm := {
    7. 1: 1234
    8. 2: 5678
    9. }
    10. s := intm[3]
    11. println(s) // 如果字典元素不存在,会返回该类型的默认值:0
    12. //也可以加上or代码块来进行错误处理
    13. mm := map[string]int{}
    14. val2 := mm['bad_key'] or { panic('key not found') }
    15. println(val2)
    16. myfn()
    17. }
    18. fn myfn() ? {
    19. mm := map[string]int{}
    20. x := mm['bad_key']? //也可以本层级不处理,向上抛转错误
    21. println(x)

    if条件语句判断字典成员是否存在


    更多字典相关的函数,参考