CentOS7搭建Go开发环境

安装Go

获取安装包

官网或国内镜像查找最新版本,当前最新版本1.11.5 1.12 1.13.1

1
2
3
4
$ cd /tmp
# wget https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz
# wget https://dl.google.com/go/go1.12.linux-amd64.tar.gz
$ wget https://dl.google.com/go/go1.13.1.linux-amd64.tar.gz

解压安装包

1
2
3
4
5
# sudo tar -xzf go1.11.5.linux-amd64.tar.gz -C /usr/local
# sudo tar -xzf go1.12.linux-amd64.tar.gz -C /usr/local
$ sudo tar -xzf go1.13.1.linux-amd64.tar.gz -C /usr/local

# 查看/usr/local会发现多了一个go目录

配置Go

理解环境变量

  • /usr/local/go中包含开发工具及标准库,为了使其正常使用需配置环境变量
  • GOROOT
    • Go安装目录的根目录即/usr/local/go,主要用于查找Go工具及标准库
    • Go工具目录为/usr/local/go/bin
  • GOBIN
    • Go程序经过编译、构建生成的可执行文件的全局存放路径,其值是一个目录的绝对路径
    • go installgo get命令会将构建好的可执行文件放于此处
    • GOBIN优先级比GOPATH/bin要高,如果配置了GOBIN可执行文件就会安装到GOBIN而不是GOPATH/bin
    • 通常将其放入系统PATH环境变量中方便运行程序
  • GOPATH
    • Go程序开发工作目录的根目录,详见GOPATH详解
    • 默认情况下,Unix/Linux中为$HOME/go,在Windows为%USERPROFILE%/go
    • 如果想更改位置一定要设置该环境变量
    • 注意:1.11及以后版本因Go Modules的引入GOPATH将逐步被取代
  • GOPROXY
    • 到指定网址下载依赖代码,不设置默认从官方网址下载
    • 七牛云提供的Go模块代理goproxy.cn
  • GOCACHE
    • 存放Go程序构建时生成的执行文件,默认路径$HOME/.cache/go-build
    • 官方文档
  • 其他环境变量详见官方文档

配置环境变量

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 修改配置文件
$ vim /etc/profile OR vim $HOME/.profile

# 添加Go相关环境变量配置
# Go Dev Env Config
export GOROOT=/usr/local/go
export GOPATH=/vagrant/go
export GOBIN=$GOPATH/bin 
export GOPROXY=https://goproxy.cn,direct
export PATH=$PATH:$GOROOT:$GOROOT/bin:$GOPATH:$GOBIN

# 使之生效
$ source /etc/profile OR source $HOME/.profile

GOPATH其他配置方法,详见官方Wiki

验证Go

  • 任意目录输入go env查看环境变量

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    GO111MODULE=""
    GOARCH="amd64"
    GOBIN="/vagrant/bin"
    GOCACHE="/home/vagrant/.cache/go-build"
    GOENV="/home/vagrant/.config/go/env"
    GOEXE=""
    GOFLAGS=""
    GOHOSTARCH="amd64"
    GOHOSTOS="linux"
    GONOPROXY=""
    GONOSUMDB=""
    GOOS="linux"
    GOPATH="/vagrant/go"
    GOPRIVATE=""
    GOPROXY="https://goproxy.cn,direct"
    GOROOT="/usr/local/go"
    GOSUMDB="sum.golang.org"
    GOTMPDIR=""
    GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
    GCCGO="gccgo"
    AR="ar"
    CC="gcc"
    CXX="g++"
    CGO_ENABLED="1"
    GOMOD=""
    CGO_CFLAGS="-g -O2"
    CGO_CPPFLAGS=""
    CGO_CXXFLAGS="-g -O2"
    CGO_FFLAGS="-g -O2"
    CGO_LDFLAGS="-g -O2"
    PKG_CONFIG="pkg-config"
    GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 \
    -fdebug-prefix-map=/tmp/go-build073757467=/tmp/go-build -gno-record-gcc-switches"
  • 输入go version查看版本

    1
    2
    3
    
    # go version go1.11.5 linux/amd64
    # go version go1.12 linux/amd64
    go version go1.13.1 linux/amd64

卸载Go

  • 删除Go安装目录即sudo rm -rf /usr/local/go
  • 删除环境变量,修改/etc/profile$HOME/.profile删除与Go有关的环境变量

编写Go

创建项目

  • go 1.13之前

    1
    
    $ mkdir -p $GOPATH/src/hello
  • go 1.13之后

    1
    2
    
    $ cd /your/workspace
    $ mkdir -p ~/your/workspace/hello

创建源文件

  • go 1.13之前

    1
    2
    
    # 不一定要是main.go
    $ vim $GOPATH/src/hello/hello.go
  • go 1.13之后

    1
    
    $ vim ~/your/workspace/hello/hello.go

编写源文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// 添加如下内容
package main

import (
	"fmt"
)

func main() {
    fmt.Println("Hello, World! Golang")
}

构建并运行

  • go 1.13之前

    1
    2
    3
    
    $ go install $GOPATH/src/hello/hello.go
    $ hello
    Hello, World! Golang
  • go 1.13之后

    1
    2
    3
    
    $ go install ~/your/workspace/hello/hello.go
    $ hello
    Hello, World! Golang

概览Go

A Tour of Go

参考