在Gox语言中,是用map类型来表示一般语言中的“字典”(dictionary)概念的,这与Go语言也是一致的。对map的声明、赋值和其他操作,我们来看看下面的例子。
<code>a = {} a["Num"] = 3 a[5] = "abc" a[-1] = true a["ary"] = [1, "xyz", false] a[false] = "not true" a.Item1 = "item 1" pv("a") pl("length of a: %v", len(a)) pl("a.Num: %v", a.Num) a["Num"]++ println(a["Num"]) a[5]*=2 a[5] = a[5] * 3 println(a[5]) b = map[interface]interface{} pv("b") c = map[int]interface{} c[3] = 3 c[18] = "abc" c[-198] = true pv("c") v, ok = c[18] if ok { println("v:", v) } delete(c, 18) println("c:", c) _, ok = c["b"] println(ok) println("---") for k in keys(a) { println("[", k, "]:", a[k]) } println("---") for k, v in a { pl("[%v] %v", k, v) } /<code>
执行结果是:
- Gox语言中,可以用花括号直接来声明和建立一个map,也可以用“b = map[interface]interface{}”这样的方式,注意方括号中不能是interface{}。两种方式效果是一样的;
- 可以用“c = map[int]interface{}”这种方法来指定key的类型,这样的话,如果以后用“c["a"]”来用字符串作为key来引用c中数据项的话,会导致程序运行报错;
- 在一般的map中,索引可以是任何类型的数据,所以代码开始对变量a以数字(甚至是负数)、字符串、布尔型变量来索引,都可以正常访问其中的数据项;
- map中的数值也可以是任意类型,甚至可以是一个数组或者另一个map
- 删除map中的某个数据项用delete内置函数;
- 可以用“v, ok = c[18]”这样的方式来确认c中是否有索引为18的数值项,如果没有,ok将是false;“_, ok = c["b"]”这样的,表示将取到的数值丢弃,只使用ok的值;
- 遍历map可以使用for循环;
- map也可以直接用“a = {"a": 3, "b", "abc"}”这样的方式直接定义。