机缘巧合,需要使用基于Go语言的开源项目,发现Go语言的开发效率和某些特性让我的开发工作变得轻松不少,因此学习了一些Go语言的知识,在实际工作中也用Go写了一点东西。
为节省时间,这里摘要一些学习心得和实际体会,注重简短易读,方便快速浏览复习。
主要参考
高效需要静态语言特性,开发简单需要动态语言特性,所以Go是结合动静两种语言的特性来设计的。
对于分布式和多核计算机特别适用。关键特性是gotoutine和channel。
后端的Web服务器,高性能分布式系统,游戏服务端的海量并行,都可以从Go语言特性中受益。
其他的诸如文本处理,前端呈现,脚本,都可以用Go搞一搞。
有垃圾回收和自动内存分配功能,所以实时性要求很高的软件慎用。
偷个懒就直接用yum或者apt安装了:
yum install golang
或者
apt-get install golang
环境变量 | 说明 |
---|---|
GOROOT | go语言的安装位置,比如 $HOME/go |
GOARCH | 386, amd64或者arm |
GOOS | darwin, freebsd, linux, windows |
GOBIN | 一般就是 $GOROOT\bin,可以留空 |
GOPATH | 一般在哪个目录下工作,就设置到哪里,其中会src, pkg和bin这几个固定的目录,后续项目结构部分会有更细致介绍 |
GOMAXPROCS | 设置程序可以使用的处理器个数和核数 |
可以下载windows版本的Go语言安装文件,因为墙的存在,可以从Go语言中文网的下载页面去下载。
按照默认安装即可。
在命令行中试验命令:
go version
查看安装是否成功,windows使用可以配合IDE或者直接文本编辑器+powershell,也是挺方便的。
Go是有运行时的,跟JVM差不多,会做内存分配,垃圾回收,栈处理,goroutine,channel,slice,map和relfection等等工作。
运行时从Go 1.5开始是自举的。有兴趣可以看代码 $GOROOT/src/tuntime。
Go可执行文件一般比较大,说明Go的运行时都嵌入到可执行文件中了,这点非常好,虽然文件大一点,但是整洁很多,只要一个文件就可以跑了,不需要搞复杂的运行环境等等蛋疼的问题。
选一个编辑器,比如我用Notepad++,再加上一个LiteIDE就可以了。
调试不完善,与其跟调试器作斗争,不如多打点log就完事了。
print
println
fmt.Print
fmt.Println
fmt.Printf //%+v:包括字段的实例信息;%#v:包括字段和限定类型名称的实例信息;%T 某个类型的完整说明
panic可以获取栈跟踪信息。