转载

给 Python 开发者的 Go 语言入门指南

0. 关于

之前 学习过 Go 一段时间 ,用 Vim 做为 IDE ,也尝试过几次 用 Go 做服务器后端 ,后来因为没有再写网站的需求就放下了一段时间。现在回忆一下用 Go 的体验,与 Python 相比可能有下面几点优势:

  1. 高性能,高性能,高性能;
  2. 低内存,低内存,低内存;
  3. 异步;

缺点有:

  1. 库太少(相比于 Python);
  2. 内置数据结构及操作太简陋;
  3. 第三方库依赖、安装、管理麻烦(墙也占了一部分原因);

最近来看 Go 的发展还是相当不错的,至少在服务器与后端方面的优势(高能低耗二进制包)还是非常吸引人的。新电脑上还没有配置过 Go 语言环境,刚好这次重新安装、配置一次,并从基础语法上与 Python 进行对比,方便有兴趣的 Python 开发者可以快速尝试一下 Go 语言,顺便作为笔记。

本文主要包括:

  1. Go 安装与配置
  2. Atom as IDE
  3. Go VS Python

1. Go 安装与配置

所有安装、配置的步骤都在 官网(需科学上网) ( 国内文档镜像 , 国内安装包镜像 )有清楚的说明,Mac OS X 已经有了 pkg 版本,可以直接双击安装。Go 语言有几个非常重要的环境变量需要搞清楚并设定好:

GOROOT

Go 的安装目录。这个目录是 Go 寻找内置库的地方,如果是 Mac OS X 安装包默认位置为 /usr/local/go ,如果是从源码手动安装,若不是安装到 /usr/local/go 则将其设定为安装目录(若是默认位置无需设定):

# add to ~/.bashrc or ~/.zshrc export GOROOT=/path/to/where/go/installed   

GOPATH

你的工作目录。这个目录用于存放从网上下载的第三方库以及你自己创建的项目。与 Python 不同的是,Go 的目标并不在于创建可以随处执行的脚本,而是以项目为单位。可以任意选择一个目录作为你的 Go 工作目录:

# add to ~/.bashrc or ~/.zshrc export GOPATH=/Users/rainy/Projects/go   

除了这两个必备的环境变量之外,还可以设定一下系统信息:

export GOARCH=amd64   export GOOS=darwin   export GOBIN=/usr/local/go/bin   

最后一个 GOBIN 是指执行 go get some-package 的时候将生成的二进制命令保存到的目录,如果不设定默认为 $GOPATH/bin ,最好将这一目录添加到系统路径中(若设定为 /usr/local/go/bin 还需要注意权限问题):

# add to ~/.bashrc or ~/.zshrc export PATH=$PATH:$GOBIN   

现在就算是安装配置完成了,执行:

go version   # go version go1.6.2 darwin/amd64 

再试试安装一个命令行工具:

go get -u github.com/astaxie/bat   

bat 工具将会被安装到 $GOBIN 下,这时我们回到工作目录下,会发现目录结构变为:

cd $GOPATH && tree -L 1   # . # ├── bin # ├── pkg # └── src 

其中 src 下面保存的是各种第三方库以及自己项目的源文件, bin 则是 go getgo install 生成的二进制执行文件, pkg 是平台相关的包。接下来将 Atom 配置成 Go 专用 IDE!

2. Atom as Go IDE

之前配置过 Vim ,但现在大部分情况都是用 Atom,而且 Atom 的插件管理更方便,所以就用 Atom 作为 IDE!

首先要安装的插件是 go-plus ,但结果发现它有一堆的依赖插件需要安装,并且这些插件依赖一些 Go 的工具,不过现在 Atom 已经可以自动安装依赖插件了,不需要一个一个手动安装:

给 Python 开发者的 Go 语言入门指南

这些插件有可能会需要一些 Go 工具的支持,例如 golintgoimportgocode 等,这里就体现出我上面提到的缺点之一了,如果是托管在 github 上的库还算好点,但如果 golang.org 或者 code.google.com 就需要科学上网了,之前也是被这些第三方库搞得焦头烂额,体验非常差。

经过漫长的等待, go-plus 的依赖都安装完了,然后安装 Go 工具:

go get -u github.com/nsf/gocode   go get -u github.com/golang/lint  # 对于 golang.org/x/ 下面的包建议去 GitHub 镜像仓库手动 Clone 项目,然后本地执行 go install cd $GOPATH   mkdir -p golang.org/x   cd golang.org/x   git clone https://github.com/golang/tools.git   go install golang.org/x/tools/cmd/goimports   

先不着急用 Atom 创建 Go 文件,先来看看此时的工作目录:

cd $GOPATH   tree -L 2   # . # ├── bin # ├── pkg # │   └── darwin_amd64 # └── src #     ├── github.com #     ├── golang.org #     ├── gopkg.in #     └── honnef.co 

Go 的第三方库存放目录是以托管网站开头的( import 的时候也是这样),自己创建的项目也应该遵循这个规范!(注意到我这里的 bin 目录下没有任何可执行文件,因为我把它们移动到系统路径下了)。

接下来创建一个新项目:

cd $GOPATH   mkdir src/github.com/rainyear/learn   atom src/github.com/rainyear/learn   

给 Python 开发者的 Go 语言入门指南

如果你还觉得 Python 的缩进是强迫症的话,那么真正的强迫症来了!Go 提供了 gofmtgoimports 工具,帮助你强行把代码整理干净,包括缩进、花括号、 import ,只要在 Atom 中保存一下,代码就会被重新整理一遍,这才是强迫症患者的福音!不过 Google 也将这一福利推广至 Python,推出了 Python 格式化工具: yapf 。

上图中是通过 Atom 的 Builder 插件执行 go run main.go 运行的,如果整个项目完成之后,可以通过 go install 打包生成二进制文件(甚至可以生成跨平台的二进制包,直接部署到线上!):

cd $GOPATH/src/github.com/rainyear/learn   go install  # 二进制包将会打包至 $GOBIN 或者 $GOPATH/bin cd $GOPATH   ls bin   # learn ./bin/learn # Hello world! 

3. Go VS Python

最后来比较一下 Go 与 Python 的一些基本语法,其中 Go 语言的例子来自 A Tour of Go , 源文件 :

给 Python 开发者的 Go 语言入门指南 给 Python 开发者的 Go 语言入门指南 给 Python 开发者的 Go 语言入门指南 给 Python 开发者的 Go 语言入门指南 给 Python 开发者的 Go 语言入门指南 给 Python 开发者的 Go 语言入门指南 给 Python 开发者的 Go 语言入门指南 给 Python 开发者的 Go 语言入门指南

原文  http://blog.rainy.im/2016/05/30/golang-101-for-pythoners/
正文到此结束
Loading...