[学习记录]初识go语言
由于学习工作需要接触到go语言,昨天花了大概半天时间查找资料,然后再用半天时间快速过了一遍go基本的语法。再简单敲了一些命令作为练习。作为一个初次见面来说应该够了,所以本文就简单介绍下这一天的收获,剩下的go的高级特性后续学到了再说。
首先推荐一下go语言教程网站http://codingdict.com/article/6745,作为一个简单认识而言足够了。
如果想好好学一学,则可以看一下《go语言圣经》(英文名《The Go Programming Language》),好像是因为中文版译名被占用了才不得已起这个名字?不过书本身是没有问题的,就和《The C Programming Language》一样经典。
--------------------------------------------------------------------
最开始当然是配置环境了,windows可以去https://golang.org/(好像访问有困难),linux可以直接apt-get或者yum获取go。
首先看一下hello world的go版本
package main import "fmt" func main() { fmt.Println("Hello, World!")//println末尾自带换行 }
虽然说号称21世纪c语言,但乍一看和python还蛮像的,每句末尾无需分号,由换行解决。println作为fmt的一个方法供调用。
运行时我们有两种方法,一种是go run hello.go,另一种是go build hello.go,再去运行生成的可执行文件。既有python内味,也有c内味了。
这里对于go的package不做多介绍,直接介绍一些最基本的语法,只是为了让大家对go有一个初步认识
1.标识符
和所有编程语言一样,go也有若干个保留字(25个),我们用标识符时要尽量避免撞车,同时还要遵守字母数字组合,数字不开头,特殊符号只认下划线_。
2.变量声明
go的变量声明和c有一些差别,格式为: var 变量名 变量类型。先提示变量名,后提示变量类型,例如 var age int
也可以不那么规矩,例如 var age=30 ,就会直接将30赋给age,并自动判断其类型,这又和python很像
极限偷懒甚至可以,例如 age:=30,也能完成上述功能,但需要注意age必须是在这一句中才第一次被声明。
3.常量声明
和变量声明很像,关键字为const, const 常量名 常量类型 = 值
常量声明有两个有趣的地方,一个是“自动复读”
第二个是自动计数器iota
4.if语句
由于go并没有采用python的缩进分段法,所以这方面就和c一样了,大括号变成必须的了
if{}
else if{
}
else{}
5.switch
go的switch很特别,大体格式与c完全一样,但go执行完一个分支后不需要手动break
还有个小技巧变量类型判断。
6.循环
go中一个for就承担了for和while的职责,通过for和if也能看出,对于c中部分关键字后跟小括号的语句,go中都省略了小括号。
同时go还有类似python的迭代循环
此外break、continue、goto都和c一样
7.函数
函数格式如下:
func 函数名(参数名 参数类型,参数名2 参数2类型) (返回值1类型 返回值2类型){}
具体的值传递与引用传递与c语言一致
8.其它
其它例如数组,指针,结构体,都和c类似,而数组切片、range取数又和python类似。在异常处理、接口等地方也是满满的既视感,可以说这些最简单的语法方面go没有什么特别独特的地方,因此对于学习过c、python的人来说,go并不难入门。后续学习经历可能更应该放在go的应用场景以及一些独有的特性上。