在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"}”這樣的方式直接定義。