Go语言语法快速入门(1)

题外话

go的语法特性相较于一些新语言来说比较少,甚至还比不过一些比较老的语言,例如,它没有隐式的数值转换,没有构造函数和析构函数,没有运算符重载,没有默认参数,也没有继承,没有泛型,没有异常,没有宏,没有函数修饰,更没有线程局部存储。

go和python的编程哲学有点像,做一件事只有一件对的方法,所以他的编译检查非常严格,不仅有和python类似的强制格式,除此之外未使用的变量导入后未使用的包都会导致编译错误。(这个特性在ide中有一个比较蛋疼的问题是变量第一次声明时就会就会显示一个错误,等到使用时错误才会消掉,看着非常不舒服)

这种思想可能会导致编程初学者比较难以入门,不过我个人还是比较喜欢的。首先我们不仅仅是自己写代码,很多时候还要看别人的代码,而这些严格的编译规定,就可以使在’看’代码的时候不容易被误导。(比如一些遗留系统常常有一些蛋疼的不知道干什么的变量,后来发现根本就没有被用到)

(除了这个之外,python和go在追求简洁上的思想也有许多共同点)


变量

使⽤关键字 var 定义变量
(话说现在好像比较新的静态语言都用var来声明变量了)

var x int
var f float32 = 1.6

如果有初始化值,可以自动推断类型,就可以省去类型声明。好多比较新的静态语言也加入了类型推导的功能了,因为类型本来就是多余信息,有初始化值已经可以表明这个变量是什么东西了。
(而在大部分动态语言中 声明和赋值根本没有区别 没有编译期检查,所以连类似var这样的东西都没有,第一次赋值即是声明)

感觉现在编程语言的发展趋势是越来越向好写的角度发展了:)

var s = "abc"

一次定义多个变量

var x, y, z int
var s, n = "abc", 123

还有这种写法

var (
a int
b float32
)

不过我个人不喜欢记这些乱七八糟和其他语言没有共性的语法,不常写很快就忘了,常写的话在和其他语言混写的时候就很不习惯。


方法可以有多返回值,这个在动态语言里比较常见,不过静态语言见的不多
_是一个占位符,可以理解成声明一个变量但是不使用

func test() (int, string) {
return 1, "abc"
}
func main() {
_, s := test()
println(s)
}

你可能感兴趣的:(编程语言相关)