摘要
本文参考了go语言官方文档,对比了C声明语法的不足,解释了go语言声明语法的特点及其规则。
1、C语言的声明语法
go语言的变量定义主要对照C语言,在C语言的基础上进行改进的。C语言中的声明语法包括变量声明和函数声明两种,其规则分别如下:
变量声明
C语言中,变量的声明主要包含两个部分,放在左边的变量类型和放置在右边的变量名称,如基本数据类型、数组、指针等三种主要类型的定义如下:
int a;
int b[];
int *c;
函数声明
函数的声明包含返回变量类型、函数名称、输入参数三个部分,其声明格式为
返回变量类型 函数名称(输入参数类型 输入参数名称){},如:
int main(int argc,char \*argv[])
2、C语言的声明语法评价
C语言的声明方法是比较巧妙的,将类型放在左边直接代表声明变量,不需要增加额外的声明语法。然而,在Go语言官方文档中详细总结了很多C语言声明的问题,并提出了go语言在声明语法中改进的思路。其中,我认为C语言的声明语法其实问题并不多,其两点问题如下:
- 1、变量名称和类型没有完全区分,如声明数组int a[]、指针数组 int *b[]等,这会导致声明语法不易阅读。并且导致理解容易混乱,同样是int类型,却可以定义整型、数组、指针等等。当前热门的java等都处理了这个问题,其变量的类型和名称是完全独立的,如数组定义写为int[] a = new int[];
- 2、由于类型和声明语法的重用,代码中类型的解析比较困难。也会导致C、java语言中变量强制转换都会为类型加上括号等情况。
3、Go语言的声明语法
变量声明
Go语言在设计声明语法时主要考虑其易读性,符合阅读习惯,同样是第1节中的三种声明情况,在阅读可以表示为:
- a: int
- b: arra