我一直很好奇,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)这样的表达已经有点看不清楚了,如果函数的返回值也是函数指针: