Tuesday, December 29, 2009

go语言的声明

看go主页上的介绍时, 有点给我还不解的做法: 就是变量声明时的语法。

golang的声明语言如下:

keywork var_name type = value

1. keywork包括:var, const, type, func
2. var_name为变量名
3. type为变量的类型(与keywork中的type有区别)

看过的语言一就是没有类型, 一就是把类型放在变量名前面:表示这个变量是什么类型。

感觉很自然。 但是golang就反这个习惯。 把类型的位置反过来了。


在golang的手册上给出了两个原因:

原因一: Also functions read better and are consistent with other declarations.


说是与函数形式一致

golang中的函数的定义方式:
func sum(a, b int) int { return a + b }

golang中的变量的定义方式:
var p, q *int

大概的意思是:
    keywork               var_name         type
函数的声明关键字
         函数名       返回值类型

原因二: short declaration


golang中的变量声明有两种缩写方式:
var var_name = value
* 放在后面就方便缩写, 成为没有类型的写法?
* 不过看上去真的比较像javascript的声明

这时没有了类型, 类型为根据value的类型决定

还有一种缩写:
var_name := value
* 这就像python的声明了


顺眼了~~~~

想了一下, 感觉还是不错的. 当我们想声明一个变量时:
1. 想到var ( 想到一个keywork, 因为它是语言的一部分 )
2. 想到变量的名称var_name
3. 想到变量的初始化. (1)这时的初始化golang是提供缩写方式的. 这就与平时的脚本一样. (2)当不想这时初始化时, 再定下这个变量的类型(毕竟golang是强类型语言)

也是很好的一种使用感觉.( 个人的感觉~~~~ )

BTW:: 其实上, golang在你没有初始化的情况下它会帮你初始化. 称为'zero value', 这个值会根据变量的类型变化. 如下:
The zero value depends on the type: integer 0,  floating point 0.0, false, empty string, nil  pointer, zeroed struct, etc.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.