静态数组
一维数组
声明
Delphi
var 数组名 : array[索引范围] of 元素类型; //索引范围是子界类型,格式为:下限..上限
Go
var 数组名 [数组长度]元素类型
Delphi的索引范围可以是任意的子界类型,而且是包含上下限的闭区间。子界可以是任意的序数类型(整型、字符型、枚举元素等),例如:0..8、5..11、'a'..'z'等。子界元素就是数组元素的下标。
Go的数组长度只能是整型,下标为0~数组长度-1。
初始化
Delphi
var 数组名 : array[1..N] of 元素类型 = (元素1, 元素2, ……, 元素N);
//如果先声明后赋值的话,赋值时就需要遍历数组对每个元素分别赋值
Go
var 数组名 [N]元素类型 = [N]元素类型{元素0, 元素1, ……, 元素N-1}
//由于初始化时元素个数已知,以上代码也可写为:
var 数组名 [N]元素类型 = [...]元素类型{元素0, 元素1, ……, 元素N-1}
//如果先声明后赋值的话,写法如下:
var 数组名 [N]元素类型
数组名 = [...]元素类型{元素0, 元素1, ……, 元素N-1}
//也可简写为:
数组名 := [...]元素类型{元素0, 元素1, ……, 元素N-1}
元素操作
Delphi
//取值
v := a[i];
//赋值
a[i] := v;
Go
//取值
v = a[i];
//赋值
a[i] = v;
遍历数组
Delphi
//var a : array[m..n] of Integer;
for i := m to n do
……
//XE之后(也可能更早)也支持以下语法
for v in a do
……
Go
//var a [N]int
for i, v := range a {
……
}
//也可以用传统写法,不过一般不那么写
比较数组
如果两个数组类型相同(包括数组的长度,数组中元素的类型)的情况下,如果两个数组的所有元素都是相等的时候数组才是相等的。
Delphi需要手动遍历比较。Go可以直接用==、<>来比较。
二维数组
未完待续