C 采用了一种聪明而不同寻常的声明语法。所以,下述声明:指明了 p 是一个int类型的指针,因为 *p的类型为int。而 a 是一个 int 数组,因为 a[3]的类型为 int。但是遗憾的是一旦类型开始复杂,C的这套语法很快就能让人迷糊了。如果当 fp 的某个参数本身又是一个函数,情况会怎样呢?尽管这不是很明显,但你声明某个 char *[]类型的变量的时候,竟然需要把名字插入到变量类型的中间。还有一点需要指出,由于类型语法和声明语法是一样的,要解析中间带有类型的表达式可能会有些难度。main 函数接受一个 int 和一个指针并返回一个int。但这种相似也意味着我们无法彻底避免在文法中有时为了避免类型和表达式的歧义需要补充括号的情况。

为什么Go语言把类型声明放在后面?

为什么Go语言把类型声明放在后面?

为什么Go语言把类型声明放在后面?

为什么Go语言把类型声明放在后面?