目录

    1. 常用环境变量

    1.1 GOROOT

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

    $ 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。

    $ 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 run$ go build 时,首先会在当前路径下的 vendor 文件夹查找依赖,当没有找到时,再从 GOPATH 中查询。但使用 $ go get$ go install 命令时,Go 依然会将依赖安装到 GOPATH 中。

    2.2 dep

    安装命令:

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

    基本命令:

    $ 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 的所有配置信息。

    $ go env
    set GOARCH=amd64
    set GOBIN=
    set GOHOSTARCH=amd64
    
    • go get

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

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

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

    • go install

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

    • go clean

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

    • go run

    命编译并运行源码文件。

    4. Hello World

    下载安装

    $ go get github.com/astaxie/beego
    

    创建文件 hello.go

    package main
    
    import "github.com/astaxie/beego"
    
    func main() {
        beego.Run()
    }
    

    编译运行

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

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