一架梯子,一头程序猿,仰望星空!

go 语言开发环境


本章主要讲解如何安装go语言编译器、配置开发环境、如何安装第三方依赖包。

1.安装go语言编译器

目前go语言最新的版本是1.16.2,当然如果官方已经有最新的版本,直接选择最新的版本安装即可。

官方下载地址:https://golang.google.cn/dl/

1.1. Linux

首先从官方下载地址,下载linux安装包:go1.16.2.linux-amd64.tar.gz

将安装包解压即可。

// 这里将go安装到/usr/local目录
tar -C /usr/local -xzf go1.16.2.linux-amd64.tar.gz

配置PATH环境变量,修改~/.bash_profile或者~/.bashrc配置文件,添加下面配置

export PATH=$PATH:/usr/local/go/bin

1.2. mac OS

苹果系统,需要下载 go1.16.2.darwin-amd64.pkg 安装包

下载安装包后,运行安装包,然后根据提示一步一步安装即可,默认安装目录是:/usr/local/go

配置PATH环境变量,修改~/.bash_profile文件,添加下面配置

export PATH=$PATH:/usr/local/go/bin

1.3. windows

下载 go1.16.2.windows-amd64.msi 安装包,直接运行安装即可,默认安装目录c:\Go

如果你下载的是zip安装包,例如:go1.16.2.windows-amd64.zip ,那么你直接压缩到你想要的安装目录,然后将 [go安装目录]/bin 添加到PATH环境变量。

2.验证安装

安装完成后,打开命令窗口,输入go命令,如果打印类似如下信息就说明安装成功了。

$ go
Go is a tool for managing Go source code.

Usage:

	go <command> [arguments]

The commands are:

	bug         start a bug report
	build       compile packages and dependencies
	clean       remove object files and cached files
	doc         show documentation for package or symbol
	env         print Go environment information
	fix         update packages to use new APIs
	fmt         gofmt (reformat) package sources
	generate    generate Go files by processing source
	get         add dependencies to current module and install them
	install     compile and install packages and dependencies
	list        list packages or modules
	mod         module maintenance
	run         compile and run Go program
	test        test packages
	tool        run specified go tool
	version     print Go version
	vet         report likely mistakes in packages

3.工作空间(workspace)

提示:Go新版本的开发目录已经不需要依赖工作空间(GOPATH路径),可以类似其他语言一样随意创建一个目录作为项目目录即可,如果不是准备了解老项目可以跳过工作空间这个章节。

在开始开发之前,我们得先了解go语言的工作空间,默认情况下,go语言的项目代码和第三方包都是在工作空间的目录内,否则会出现找不到包之类的错误。

GO语言的工作空间保存在什么目录,是由GOPATH环境变量配置的,例如:

// 将go语言的工作空间设置为/Users/tizi365/Documents/goworkspace目录
export GOPATH=/Users/tizi365/Documents/goworkspace

windows和linux系统类似,只要给GOPATH环境变量设置一个目录即可。

下面是GOPATH目录的目录结构说明:

.
├── bin     // 可执行程序目录,我们编译的可执行程序会保存在这个地方
│   └── tour
├── pkg     // 存放编译后生成的文件,一般我们很少操作这个目录
└── src     // 我们的源码目录
    ├── github.com
    ├── go.uber.org
    ├── golang.org
    ├── google.golang.org
    └── tizi365.com

初始化的时候,我们需要在工作空间创建bin和src目录,然后将GOPATH环境变量指向我们自己的工作空间目录。

提示:按照惯例,我们一般会将 $GOPATH/bin 目录,添加到PATH环境变量中,方便执行第三方包安装的命令,或者是我们自己编译安装的程序。

关于工作空间src源码子目录结构说明

通过上面的例子,大家发现src的子目录都是各种域名组成的,这个是go语言项目命名的惯例,因为默认情况下所有项目的源码都保存在src目录下面,包括下载的第三方包的源码,也是保存在src目录,为了避免命名冲突,通常都是使用域名作为项目的目录。

提示:go语言项目的目录,不像其他语言随便放在任何目录都行,默认情况GO语言的项目只能放在工作空间的src目录下面,GO语言最新版本也支持将项目放到工作空间意外的目录,这个特性会在包管理章节介绍。

4.运行 & 构建

我们通过一个简单的例子,演示一下怎么运行程序和构建项目。

首先,创建tizi365.com目录,作为我们的项目的根目录。

初始化模块

// 使用tizi365.com作为包名,初始化一个新代码模块
go mod init tizi365.com

说明:Go新版本,为了使用go模块特性需要先初始化模块,如果你只是想跑一下demo,可以忽略模块初始化。

创建: main.go文件,保存下面代码。

提示:go语言的源码文件,都是以.go作为文件扩展名。

// main包,一个项目只有一个main包,作为程序的入口
package main
// 导入fmt包
import (
    "fmt"
)

// 入口函数main
func main() {
    // 调用fmt包的Println函数,打印字符串
    fmt.Println("hello world")
}

现在目录结构如下:

.
└── tizi365.com
    ├── go.mod - go模块依赖配置信息
    └── main.go

4.1. 运行程序

平时开发调试的时候,都是通过go run 命令直接运行程序。

// 切换到项目目录
cd tizi365.com

// 通过go run 命令,运行程序
go run main.go

注意:通常一个go语言项目只有一个go文件作为程序的入口,这个go文件包含main包的定义和main入口函数的定义。 这个类似java/c/c++的main函数。

4.2. 构建程序

我们可以通过go build命令,将go源码编译成一个可执行文件,通常项目完成开发,需要打包发布到线上的时候才会构建程序。

例子:

首先切换到项目根目录,执行下面命令。

go build -o hello

提示: Go新版本,在构建程序前需要先将项目初始化为一个go模块

参数说明:

-o 指定可执行程序的名字,如果忽略这个参数,那么生成的可执行文件的名字就是项目模块的包名。

构建成功后,会在当前目录生成一个hello可执行文件。

// 直接运行程序
./hello

构建生成可执行程序后,只要将可执行程序发布到线上运行即可。

提示:我们一般go项目在发布到线上的时候,除了通过构建生成可执行程序,通常还需要组织程序运行的目录结构,依赖的配置文件或者其他资源文件,这些需要我自己编写shell脚本打包可执行文件,依赖资源文件、组织目录结构,生成安装包,然后将安装包发布到线上安装。

5.安装第三方包

开发的时候经常需要依赖很多第三方开发包,在go语言中,我们可以通过go get命令直接安装别人发布的第三方包。

例子:

// 安装gorm包,这是一个数据库操作的包
go get github.com/jinzhu/gorm

这个包会安装到GOPATH/src/github.com/jinzhu/gorm 目录。

安装包后,我们可以类似前面的例子,通过import导入包,就可以在程序中使用了。

6.Golang依赖包国内加速

因为国际网络问题,有时候下载第三方包会很慢,需要配置国内的镜像加速代理。

1.Linux & Mac

通常是修改~/.bash_profile配置文件,加入下面配置

# 配置 GOPROXY 环境变量
export GOPROXY=https://goproxy.io,direct

2.windows

原理同上,添加windows环境变量GOPROXY值等于https://goproxy.io,direct即可

3.GoLand配置

大部分人都使用Goland作为IDE开发go项目,也可以直接配置Go模块代理

按顺序打开配置Perferences —> Go —> Go Modules(vgo)—> Proxy;

如下截图:

7.开发工具

目前go语言开发主流的开发工具就是goland, 当然你也可以使用sublime之类的文本编辑器,推荐使用开发体验比较好的goland作为开发工具。