Go语言学习7:Go语言为什么要用变量名后置的方式做声明
来源:互联网 发布:德国足球知乎 编辑:程序博客网 时间:2024/04/29 21:36
我一直很好奇,Go语言为什么要采用这种把类型放在后面的声明方式。今天得空来学习一下:
首先,我们来看一下c语言的声明方式:
int x;这是一个典型的c语言声明,它声明了一个整型的变量x。这样看来c语言的声明还算是简单明了,但是当遇到指针声明,尤其是函数指针的时候,问题就变得复杂了,就不是一眼能够看清楚的了:
int (*fp)(int (*ff)(int x, int y), int b)上面声明了一个函数指针fp,该函数带有连个参数,第一个是一个函数指针,第二个是一个整数,我们知道c语言声明的时候是可以不带变量名的,于是,上面的声明可以修改为下面的这个样子:
int (*fp)(int (*)(int, int), int)这样的表达已经有点看不清楚了,如果函数的返回值也是函数指针:
int (*(*fp)(int (*)(int, int), int))(int, int)
哦,我的天啊,杀了我吧……………………,还能很轻松的看出来谁是谁不?这变得连他妈都不认识了。
下面,我们来看看Go语言的声明方式:
也有很多非类c的语言,才有了变量名前置的声明方式:
x: intp: pointer to inta: array[3] of int但是,这个方式还是有点繁琐,于是Go做了简化,删除了冒号和部分关键字:
x intp *inta [3]int现在我们直接将上面的c语言的声明:
int (*(*fp)(int (*)(int, int), int))(int, int)修改为Go的声明方式:
f func(func(int,int) int, int) func(int, int) int怎么样,这样子读起来是不是比较顺畅了。虽然也去掉了变量名,但是好不妨碍我们从左向右读取,理解也很方便。
不过,Go语言在变量名后置方面也没有做的太彻底:
例如:声明 var p *int
在使用的时候就变成了*p,不过这也是没有办法的事情,因为,如果继续写为p*,这个时候很容易和表示乘法的型号混淆。
以上就是个人的一些见解,不足之处还请大家一起讨论讨论……
- Go语言学习7:Go语言为什么要用变量名后置的方式做声明
- go语言学习-变量声明
- go语言的变量声明
- go语言变量声明后的默认值
- 为什么要学习Go语言
- 为什么要学习go语言
- go语言学习-变量
- go语言学习-变量
- go语言学习-变量
- Go语言学习5:Go语言的变量类型
- 为什么学习go语言编程?
- 【Go】为什么 Go 语言把类型声明放在后面?
- Go语言中的变量声明和赋值
- Go语言:变量声明,作用域,指针
- Go语言学习笔记-变量
- Go语言学习(一)变量
- Go语言基础学习:变量
- go 语言中变量和常量的声明方法
- C语言中的经典问题之数组
- Mac 安装opencv教程
- 《鸟哥的Linux私房菜》读书笔记五
- 【*夜深了,无心睡眠*】
- 虚拟机安装了ubuntu,忘记密码修复
- Go语言学习7:Go语言为什么要用变量名后置的方式做声明
- 【小猿說】开发经理(技术型)需要做的第一件事情
- ContentObserver的基本使用
- HDU 4572 Bottles Arrangement
- KMP算法
- PHP HelloWord 扩展建立编译
- 我悟悟悟悟悟悟悟悟悟悟
- Andrid TextView 设置可以滚动后,一滚动就发现文字变黑了
- elipse手机设备显示Target unknown解决方法