Gox語言中的數組類型及其常用操作-GX3

作為腳本語言,Gox語言中的複合類型當然會設計得更加方便一些,也很容易理解。


數組

來看看例子。

<code>a = [1, 2, 3, "abc", 12.3]

println(a)

println(a[2])

println(len(a))
/<code>

運行結果

Gox語言中的數組類型及其常用操作-GX3

可以看出,Gox語言中,數組的各個元素可以是不同的數據類型,本例中就包含了整型、浮點數和字符串三種數據類型。

數組可以直接用方括號來定義及賦值,如果要定義一個空數組,直接用“[]”這樣的方式定義即可。

數組的索引和其他語言類似,是用方括號來進行索引。獲取數組長度是使用內置函數len。

再看看數組更多的操作。

<code>a = []interface {1, 2}

a += "abc"
a = a + "xyz"

pv("a")

a[0]++

a[1] = [3.2, 16]

// a[5] = "5th" // will index out of range

a[4] = 1000

a[len(a)] = "last"

pv("a")

pl("a[1][1] = %v", a[1][1])

b = [19, 19]

pl("a + b = %v", a + b)

c = [a] + [b] + b


pv("c")

d = a[3:5]

pv("d")

e = remove(a, 1, 3)

pv("e")

f = make([][]bool)

f[0] = []
f[0][0] = false
f[0][1] = true

pv("f")

g = []float64{1.2, 3, 56}

pv("g")

i = 0
for v in c {
pl("i: %v, v: %v", i, v)
i ++
}

for i = 0; i < len(c); i ++ {
pl("i: %v, v: %v", i, c[i])
}
/<code>

運行結果是:

<code>a([]interface {}): [1 2 abc xyz]
a([]interface {}): [2 [3.2 16] abc xyz 1000 last]
a[1][1] = 16
a + b = [2 [3.2 16] abc xyz 1000 last 19 19]
c([]interface {}): [[2 [3.2 16] abc xyz 1000 last] [19 19] 19 19]
d([]interface {}): [xyz 1000]
e([]interface {}): [2 1000 last]
f([][]bool): [[false true]]
g([]float64): [1.2 3 56]
i: 0, v: [2 1000 last xyz 1000 last]
i: 1, v: [19 19]
i: 2, v: 19
i: 3, v: 19
i: 0, v: [2 1000 last xyz 1000 last]

i: 1, v: [19 19]
i: 2, v: 19
i: 3, v: 19
/<code>

需要說明的是:

  • 數組的定義除了可以用方括號直接定義,也可以是包含類型說明的方式,如例子中的數組變量a定義的是interface{}類型的數組,這是Go語言中的類型,表示類似C/C++語言中void*的概念,表示可以容納各種類型。而數組g則是定義為float64類型的數組,此時如果要給g增加一個非float64類型的數值,將會出錯。
  • 數組可以直接用索引的方式修改其中的數值,也可以直接用“++”等操作符直接修改其中的數據;
  • 數組可以用“+”或者“+=”操作符往裡面添加元素,也可以按最後的索引值直接賦值來自動添加元素,但如果索引值比數組本身長度還要大,這時候將會出錯,所以一般用“a[len(a)] = "last"”中央的方式是比較安全的;
  • 如果是多維數組,可以用類似“a[1][1]”這樣的方式去訪問;
  • 兩個數組可以直接用加號相加,效果是將兩個數組合並;
  • 數組可以作切片操作,用類似“d = a[3:5]”的方式;
  • 數組中的元素可以用內置函數remove來刪除,例如:“e = remove(a, 1, 3)”表示將數組a中的序號為1開始到序號為3的元素全部刪除,並將結果賦值到新的數組變量e中(注意原數組a不變);
  • 數組也可以用內置函數make來初始化,注意此時其中仍然沒有數值,需要添加;
  • 數組的遍歷可以使用for循環,傳統的三段式for循環和for……in……的形式都可以;


分享到:


相關文章: