Please enable Javascript to view the contents

Go 开发配置

 ·  ☕ 3 分钟

1. 常用环境变量

1.1 GOROOT

$GOROOT 是安装 Go 程序包的本地目录。

1
2
3
4
cd /c/Go
ls
AUTHORS          CONTRIBUTORS  PATENTS    VERSION  bin  favicon.ico  misc  robots.txt  test
CONTRIBUTING.md  LICENSE       README.md  api      doc  lib          pkg   src

1.2 GOPATH

$GOPATH 是 Go 的工程目录,用来存放代码、第三方库、编译中间文件等。

如果需要配置多个目录,在 Mac 和 Linux 下可以通过 : 分割,在 Windows 下可以使用 ; 分割表示。

需要注意的是,go get 获取的包,默认存放在第一个目录下。

$GOPATH 目录下,约定有三个子目录:

  • src:存放源代码
  • pkg:存放编译时,生成的中间文件
  • bin:存放编译后生成的可执行文件,通常会将 ;%GOPATH%\bin 加入环境变量 PATH 中,以方便执行编译后的程序。

在项目开发中,有两部分代码需要管理:

  • 第三方库
  • 业务的项目源码

有三种 GOPATH 管理方式:

  • 多个项目,全局只有一个 GOPATH。简单,但是项目隔离不够。
  • 第三方库和业务源码分开放置,配置两个 GOPATH
  • 每个项目使用单独的 GOPATH,编写脚本进行编译。

通常,为了简单,会让多个项目公用一个 GOPATH。

1
2
3
cd /c/data/go/src
ls
project1  project2  github.com  gitlab.com 

/c/data/go/ 就是我配置的 GOPATH 目录。

在 src 目录中,既有 github\gitlab 等第三方库,也有业务相关的项目代码。

1.3 GOBIN

GOBIN 是编译之后,可执行文件的安装目录。如果设置了 GOBIN,编译后的可执行文件将不会安装到 GOPATH 下的 bin 目录。如果 GOPATH 包含了多个目录,则必须设置 GOBIN。

2. 依赖管理

在 GOPATH 路径下,不仅存放着项目代码,还有大量第三方依赖库。当项目和依赖很多时,GOPATH 路径下的代码量会非常大,难以管理。

2.1 vendor

从 1.5 开始,Go 加入了 vendor 机制。vendor 机制就是在项目中加入一个 vendor 文件夹,用于存放依赖,隔离项目。

在使用 go rungo build 时,首先会在当前路径下的 vendor 文件夹查找依赖,当没有找到时,再从 GOPATH 中查询。但使用 go getgo install 命令时,Go 依然会将依赖安装到 GOPATH 中。

2.2 dep

安装命令:

1
go get -u github.com/golang/dep/cmd/dep

基本命令:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
dep
Dep is a tool for managing dependencies for Go projects

Usage: "dep [command]"

Commands:

  init     Set up a new Go project, or migrate an existing one
  status   Report the status of the project's dependencies
  ensure   Ensure a dependency is safely vendored in the project
  version  Show the dep version information
  check    Check if imports, Gopkg.toml, and Gopkg.lock are in sync

Examples:
  dep init                               set up a new project
  dep ensure                             install the project's dependencies
  dep ensure -update                     update the locked versions of all dependencies
  dep ensure -add github.com/pkg/errors  add a dependency to the project

在帮助文档中,已经很清楚地描述了 dep 的使用方法。除此,还有 godep、go modules 可以用来管理依赖包。

3. 基本操作命令

  • go env

查看 go 的所有配置信息。

1
2
3
4
go env
set GOARCH=amd64
set GOBIN=
set GOHOSTARCH=amd64
  • go get

下载或更新指定的依赖包,并对其进行编译和安装。

1
go get github.com/astaxie/beego
  • go build

编译源码文件以及依赖包。

  • go install

编译并安装指定的依赖包。

  • go clean

删除其它命令产生的文件和目录。

  • go run

编译并运行源码文件。

4. Hello World

下载安装

1
go get github.com/astaxie/beego

创建文件 hello.go

1
2
3
4
5
6
7
package main

import "github.com/astaxie/beego"

func main() {
    beego.Run()
}

编译运行

1
2
3
go build hello.go
./hello.exe
2019/01/23 21:40:59.535 [I]  http server Running on http://:8080

打开浏览器并访问 http://localhost:8080


微信公众号
作者
微信公众号