golang为[z] [y] [x] int定义数组int [x] [y] [z]有什么好处?

Goh*_*han 1 c# c++ java syntax go

我刚开始学习一些基本知识golang,在查看数组定义语法时对我来说有点奇怪.

C++/C#/ Java都定义了多维数组,如:

int arr[X][Y][Z]; // C/C++
int[,,] arr = new int[X, Y, Z]; // C#
int[][][] multi = new int[X][Y][Z]; // Java
Run Code Online (Sandbox Code Playgroud)

在去:

var arr [Z][Y][X]int32 // go
Run Code Online (Sandbox Code Playgroud)

语法有什么优势?

fuz*_*fuz 7

C#和Java的语法都受到C的启发,并继承了C语法的所有怪癖.有一篇很好的文章说明为什么Go有不同的语法:

去语法

C系列之外的语言通常在声明中使用不同的类型语法.虽然它是一个单独的点,但通常首先出现名称,通常后面跟冒号.因此,我们上面的例子变得类似(用虚构但用说明性的语言)

x: int
p: pointer to int
a: array[3] of int
Run Code Online (Sandbox Code Playgroud)

这些声明很清楚,如果详细 - 你只需从左到右阅读它们.Go从这里开始提示,但为了简洁起见,它会删除冒号并删除一些关键字:

x int
p *int
a [3]int
Run Code Online (Sandbox Code Playgroud)

[3]int表达式的外观和如何使用表达式之间没有直接的对应关系.(我们将在下一节回到指针.)您可以清楚地了解单独语法的成本.