Golang语言学习分享

Posted on

Golang语言是谷歌开发的编程语言,虽然运行效率比不上C语言那么高效,但是也算比C语言更容易开发,因为内置了很多数据结构和借鉴了其它语言的优点,容易学习和开发。在实习的阶段也使用Go语言开发了一个简单的项目。所以想把学习的一些经验记录下来。

Golang的安装

我推荐使用Linux系统来学习和使用Golang语言,各种发行版的包管理器应该默认都会有Golang的安装包。不过还是要说下如何手动安装,去官网下载Golang的安装包,至少要1.7版本以上。然后解压缩和配置环境变量。 过程很简单。

Golang入门

首先,请大家阅读官方的这篇文档How to Write Go Code。这篇文章介绍了如何写一个基本的Golang程序和类,这里要说的是GOPATH,使用Golang语言必须要设置GOPATH环境变量,可以通过使用go env来查询Golang相关的环境变量。GOPATH下一般有三个文件夹bin,src,pkg。src下存放我们写的Golang项目,bin下是编译好的二进制文件,pkg文件夹下是生成的库文件。 我们安装的第三方库也会存放在src文件夹下,记住 Golang 引用的包名的根文件夹是GOPATH的src文件夹,所以我们一般都要使用绝对路径来引用包避免出现错误。

还有要注意的一点是,需要编译的Golang项目必须放在GOPATH下的src文件夹下,否则编译的时候无法正确的找到相关的依赖包。Golang还有一个好处就是可以直接以二进制文件的方式运行,只依赖系统的glibc。所以部署的时候特别方便,不像其他语言一样必须安装相应的解释器。

Golang依赖问题

开发程序肯定会使用各种第三方依赖,目前Golang语言的各种库都是存放在github上,国内下载很不方便,所以要让每个开发者都去下载一份依赖确实很不友好。还好Golang在1.7版本以上直接vendor。如果项目里有vendor文件夹,Golang会首先读取这个文件夹作为依赖来使用。使用Golang vendor的方法很简单:

    go get -u -v github.com/kardianos/govendor
    govendor init
    govendor add +external

这三个步骤分别是安装,初始化,和添加依赖。这样就在项目本身里面添加了依赖,协同开发的时候大家也没必要再去更新一份,非常方便。

Golang性能分析

在开发高性能多并发程序的时候,对系统的实时响应要求很苛刻,这就需要使用专业的分析工具来进行代码分析,确定出耗时代码进行相应的优化。好在Golang本身提供了这个工具pprof,这个工具可以列出具体每个函数的耗时,还能进一步跟踪函数里面的具体细节,定位耗时代码。

Golang序列化

在开发程序的过程中,为了操作方便,我们会定义各种各样的结构体来表示数据。很多情况下,结构体需要进行网络通讯,这时候我们就不得不序列化结构体进行网络发送。就像前端开发中把JSON对象转换成字符串发送出去一样。但是序列化却是一个很耗时的过程,处理不当就会成为系统的瓶颈所在。所以我列举出了几种序列化方案,推荐大家使用。我最后选择的是gencode

好用的Golang项目推荐

Github有很多不错的Golang项目可以学习借鉴,例如Go Git Service,就是一个非常好用的代码托管项目。

参考

pprof

Golang Serializer Benchmark Comparison

awesome-go

tagged: Golang
comments powered by Disqus