fn test_map_of_map() { mut x := map[string]map[string]int{} x['a'] = map[string]int{} assert x['a']['b'] == 0 x['a']['b'] = 5 assert x['a']['b'] == 5 x['a']['b'] = 7 assert x['a']['b'] == 7 } fn test_map_of_map_of_map() { mut y := map[string]map[string]map[string]int{} y['a'] = map[string]map[string]int{} y['a']['b'] = map[string]int{} assert y['a']['b']['c'] == 0 y['a']['b']['c'] = 5 assert y['a']['b']['c'] == 5 y['a']['b']['c'] = 7 assert y['a']['b']['c'] == 7 } struct Foo { mut: name string } fn test_map_of_map_to_struct() { mut foos := map[string]map[string]Foo{} foos['zza']['zzb'] = Foo{'bar'} assert foos['zza']['zzb'].name == 'bar' // foos['zza']['zzb'].name = 'baz' assert foos['zza']['zzb'].name == 'baz' } fn test_map_of_map_key_plus_assign() { m := { 'a': 'x' } mut n := { 'x': 1 } n[m['a']] += 2 println(n) assert n['x'] == 3 }