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)
语法有什么优势?
C#和Java的语法都受到C的启发,并继承了C语法的所有怪癖.有一篇很好的文章说明为什么Go有不同的语法:
去语法
C系列之外的语言通常在声明中使用不同的类型语法.虽然它是一个单独的点,但通常首先出现名称,通常后面跟冒号.因此,我们上面的例子变得类似(用虚构但用说明性的语言)
Run Code Online (Sandbox Code Playgroud)x: int p: pointer to int a: array[3] of int这些声明很清楚,如果详细 - 你只需从左到右阅读它们.Go从这里开始提示,但为了简洁起见,它会删除冒号并删除一些关键字:
Run Code Online (Sandbox Code Playgroud)x int p *int a [3]int
[3]int表达式的外观和如何使用表达式之间没有直接的对应关系.(我们将在下一节回到指针.)您可以清楚地了解单独语法的成本.