一、Linux环境搭建
本文搭建环境以Linux(Centos 6.5)为例,其他Linux环境相同
1. 手动安装 Go
1)下载 Go 发行版
从官方地址:https://golang.org/dl/ 上下载合适的 二进制发行版 (例如:go1.11.4.linux-amd64.tar.gz):
1 wget https://dl.google.com/go/go1.11.4.linux-amd64.tar.gz
2)提取压缩包
将压缩包放到 /usr/local 下
1 tar -xzf go1.11.4.linux-amd64.tar.gz -C /usr/local
3)建立软链接
1 ln -s /usr/local/go/bin/* /usr/bin/
4)检查是否安装成功
如果输入 go version 显示出go版本号说明安装成功
[root@centos src]# go versiongo version go1.11.4 linux/amd64
2. 设置 Go 开发环境
1)创建工作空间
我们创建三个目录,分别存放源码,编译生成的库文件,编译生成的二进制文件
src 目录包含Go的源文件,它们被组织成包(每个目录都对应一个包)
pkg 目录包含包 编译后生成的库文件bin 目录包含包 编译后生成可执行程序。路径可以根据自己选择合适工作空间及子目录:
/home/go_work/src /home/go_work/pkg/home/go_work/bin
2)配置环境变量
编辑环境变量配置文件 vim /etc/profile 在末尾添加下面三行,然后source /etc/profile 让其在本次生效(每次在启动Linux时会自动source该文件),运行 go env 查看go环境变量配置是否正确
其中,GOROOT: Go安装路径;
GOPATH:工作目录。
export GOROOT=/usr/local/goexport GOPATH=/home/go_work/export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
3)测试 Go 源码
构建一个hello world程序来检查Go的安装是否正确,操作如下:
(1)在上面的 /home/go_work/src 路径下新建目录app(mkdir app) ,然后进入该目录,vim hello.go 文件,内容如下:
package mainimport "fmt"func main() { fmt.Printf("hello, world\n")}
(2)编译并运行
第一种方法:编译 hello.go 文件,将编译后的可执行文件(hello,名字可以随便指定)放在 /home/go_work/bin/ 下,并使用绝对路径执行,或者直接执行编译后的 hello 都可以输出 hello, world。
[root@centos2 src]# go build -o /home/go_work/bin/hello /home/go_work/src/app/[root@centos2 src]# /home/go_work/bin/hellohello, world[root@centos2 src]# hellohello, world
第二种方法:直接执行 go install 项目名称,可以将编译后的二进制文件(app)放在 /home/go_work/bin/ 下。
[root@centos2 src]# go install /home/go_work/src/app[root@centos2 src]# apphello, world
(3)go get 与 go install
后面在学习Go的过程中经常会用到第三方API,也就需要安装第三方API的库,我们可以使用 go get 很方便的实现第三库的下载安装,在使用go get时需要安装Git。
go get会做两件事:
- 从远程下载需要用到的包
- 执行go install
go install
- go install 会生成可执行文件直接放到bin目录下,当然这是有前提的,你编译的是可执行文件,如果是一个普通的包,会被编译生成到 pkg 目录下该文件是.a结尾
(4)关于go的整体一个开发目录
go_work // go_work为GOPATH目录 -- bin -- myApp1 // 编译生成 -- myApp2 // 编译生成 -- myApp3 // 编译生成 -- pkg -- src -- myApp1 // project1 -- models -- controllers -- others -- main.go -- myApp2 // project2 -- models -- controllers -- others -- main.go -- myApp3 // project3 -- models -- controllers -- others -- main.go
3. 卸载 GO
卸载 Go 就是将安装Go的东西全部删除
(1)删除 go 目录:
rm -rf /usr/local/go
(2)删除软连接:
rm -rf /usr/bin/go
4. 升级 Go
升级Go就是卸载重装的过程:
1)卸载 Go
2)安装 Go
二、Windows环境搭建
1.准备工具
由于墙的存在,很多网址无法下载,推荐https://studygolang.com/dl去下载。当前我下载的是 go version go1.8 windows/amd64,当然也可以下载最新版本,安装的时候一路下一步(也可以改变安装的路径)直到完成。
2. 配置环境变量
GOPATH是工作目录(自己设置在 F:\go\project)
GOROOT是安装go的根目录(默认是在C:\Go\bin)
将上面两个变量添加到系统变量中(%GOROOT%\bin;%GOPATH%;%GOPATH%\bin;)
3. 验证安装是否成功
(1)如果在终端输入go version 显示出 go 版本号说明安装成功
(2)测试 Go 源码
在 F:\go\project 创建三个目录,分别存放源码,编译生成的库文件,编译生成的二进制文件
src 目录包含Go的源文件,它们被组织成包(每个目录都对应一个包)
pkg 目录包含包 编译后生成的库文件bin 目录包含包 编译后生成可执行程序在src目录下创建hello.go 文件,内容如下:
package mainimport "fmt"func main() { fmt.Printf("hello, world\n")}
(3)运行hello.go
到 F:\go\project\src 路径下运行 go run hello.go,如果出现 hello, world 说明 Go已被正确安装
三、Windows 下Go开发工具
这里将介绍Sublime Text 3(以下简称Sublime)+ GoSublime + gocode的组合,那么为什么选择这个组合呢?
1. 安装Package Control 插件
- 自动化提示代码,如下图所示
- 保存的时候自动格式化代码,让您编写的代码更加美观,符合Go的标准。
- 支持项目管理
- 支持语法高亮
- Sublime Text 3可免费使用,只是保存次数达到一定数量之后就会提示是否购买,点击取消继续用,和正式注册版本没有任何区别。
接下来就开始讲如何安装,下载 ,根据自己相应的系统下载相应的版本,然后打开Sublime,打开之后安装 Package Control:Ctrl+` 打开命令行,执行如下代码:
适用于 Sublime Text 3:
import urllib.request,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();urllib.request.install_opener(urllib.request.build_opener(urllib.request.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib.request.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())
适用于 Sublime Text 2:
import urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp)ifnotos.path.exists(ipp)elseNone;urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read());print('Please restart Sublime Text to finish installation')
这个时候重启一下Sublime,可以发现在在菜单栏多了一个如下的栏目,说明Package Control已经安装成功了。
我用上面的方法安装 Package Control 各种问题,最后选择离线安装:
首先下载 Package Control 安装包,地址:,下载并解压缩到 Preferences -> Browse Packages 这目录下,然后重启Sublime,就可以看见安装的 Package Control 包:
2. 安装 GoSublime 插件
网上的方法是:打开刚才安装的 Package Control(Preferences -> Package Control)然后输入install,如下,点击红色框,稍等一会会弹出一个框,输入GoSublime,就可以找到要安装的GoSublime 开始安装 GoSublime 包,很遗憾 sublime3 没有这个包(如果你发现有,那就按照这种方法安装):
我在点击 Package Control 时遇到下面的问题,经过百度说是因为要访问的网站在国外特别慢:
解决方法如下:
方案一:在C:\Windows\System32\drivers\etc\hosts文件中加入如下代码: (注:就是添加本地域名映射,如果不行就使用方案二)
50.116.34.243 sublime.wbond.net
方案二:
1.下载这个网站的内容并保存到本地: 注意sublime的版本,这个文件默认是3.0.0 关键字为: schema_version2.打开配置文件,(添加下载好的文件路径)
Preferences >Package Settings >Package Control >Settings -User,添加如下内容(注意文本格式,路径换成自己的),实测两种方法都不可行。"channels": ["D:\\SublimePlugin\\channel_v3.json" ]
现在使用离线安装的方法,到地址: 下载GoSublime安装包并解压缩到 Preferences -> Browse Packages 这目录下,此时就可以看到GoSublime
3. 配置 GoSublime
在Settings - User中(下图)写入环境变量(替换成你自己的GOPATH和GOROOT):
{ "env": { "GOPATH": "F:\\Go\\project", "GOROOT": "c:\\go" }}
4. 安装 gocode 插件
gocode是go语言自动补全守护程序。这个程序被称为守护进程是因为它使用了客户端服务器的架构,自动补全的速度特别快,热缓存的自动补全时间仅仅为30ms,几乎感觉不到。
在命令行中输入:
go get -u github.com/nsf/gocode
gocode 将会安装在默认`$GOBIN`,另外建议安装 gotests(生成测试代码),先在 sublime 安装 gotests 插件,再运行:
go get -u -v github.com/cweill/gotests
5. 验证是否安装成功
打开Sublime,在$GOPATH下新建hello.go文件输入下面的代码过程中,看看语法是不是高亮了,输入import是不是自动化提示了,import "fmt"之后,输入fmt.是不是自动化提示有函数了。
如果已经出现这个提示,那说明你已经安装完成了,并且完成了自动提示。package mainimport ( "fmt")func main() { fmt.printf("Hello world")}
如果没有出现这样的提示,一般就是你的$PATH没有配置正确。你可以打开终端,输入gocode,是不是能够正确运行,如果不行就说明$PATH没有配置正确。(针对XP)有时候在终端能运行成功,但sublime无提示或者编译解码错误,请安装sublime text3和convert utf8插件试一试
更多IDE安装清查看:
6. 安装CTags插件
CTags插件是追踪函数工具,比如我们使用fmt.Println("hello")想要看Println在哪定义,可以通过CTags这个插件来实现,如果上面的Package Control正常,可以使用在线的方法安装。
我是通过离线的方法安装:
首先下载CTags包并解压到任意位置(比如我放在 D:\sublimeCtags):
地址:
将 Settings-Default 的内容全部复制到Settings-User,然后找到Command行,把解压后的ctags的可执行文件的路径复制到command后的引号内:
如果想要对某个工程中的所有文件进行函数跟踪,比如我的 go_dev 这个工程,将鼠标放到该工程右键点击下面红框内的 CTags:Rebuild Tags,会生成一些相关文件:
然后将鼠标放到函数所在行,点击右键 Goto Definition 就可以找到函数定义的位置:
也可以使用命令行:
在cmd中cd进入源码目录(比如D:/source_code),在该目录下执行下列命令:
d:\source_code>ctags -R -f .tags
参考文献:
- https://blog.csdn.net/q176782/article/details/79050851
- https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/01.4.md