Mac下配置Go语言开发环境

Posted by zhang on

最近在看一些东西,其中用到了Go语言,之前没有接触过,先在Mac下配置了开发环境。记录一下。

1. 安装brew

1.1 安装brew

brew,又叫是homebrew,是macOS上的一个有ruby开发的软件包管理工具,类似ubuntu上的apt-get,它可以帮你很方便的在Mac上安装或卸载软件。

可以直接在终端中复制以下命令,安装brew


/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

1.2 切换brew源

安装完成,你就觉得你成功了么?那你可就图样图森破了,因为你基本上是无法更新和使用brew的,至于原因和你为什么不能看『非死不可』是一样的。但是有这么一个东西叫镜像……彻底改变了国人的生活……(扯远了)

国内的一些大学和一些机构对brew做了镜像(当然还有其他的一些镜像),我们可以通过替换brew默认源的方式来加快brew的速度。

目前我在用的是中科大的镜像,清华也有一个镜像。

在这里要说一下:brew主要分为两部分:git repo(位于GitHub)和二进制bottles(位于bintray),这两部分在国内的访问都不是很顺畅。

那如何更换呢:

  1. 替换Homebrew默认源为中科大镜像
    
    # 替换brew.git:
    cd "$(brew --repo)"
    git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
    
    #替换homebrew-core.git:
    cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
    git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
    

    既然是镜像就有可能失效或者宕机,在中科大源失效或宕机的时候可以:1.使用其他国内源镜像(git repo的镜像比较多,比如使用清华大学镜像源coding.net镜像源)2.切换回官方源。

    这里写下切换回官方源的方法:

    
    # 重置brew.git:
    cd "$(brew --repo)"
    git remote set-url origin https://github.com/Homebrew/brew.git
    
    # 重置homebrew-core.git:
    cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
    git remote set-url origin https://github.com/Homebrew/homebrew-core.git
    
  2. 替换Homebrew Bottles源为中科大镜像目前中科大镜像包括一些brew仓库:
    • homebrew/homebrew-core
    • homebrew/homebrew-dupes
    • homebrew/homebrew-games
    • homebrew/homebrew-gui
    • homebrew/homebrew-python
    • homebrew/homebrew-php
    • homebrew/homebrew-science
    • homebrew/homebrew-versions
    • homebrew/homebrew-x11

    对于bash用户:

    
    echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
    source ~/.bash_profile
    

    对于zsh用户

    
    echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
    source ~/.zshrc
    

1.3 更新brew

修改完源之后,你就需要更新下brew了


brew update

回车,即可获得最新的源上。

2. 安装Go语言环境

好,那我们就开始用brew来安装Go语言了。


brew install go

最后显示100%,并提示:


==> Pouring go-1.8.3.sierra.bottle.tar.gz
==> Using the sandbox
==> Caveats
A valid GOPATH is required to use the `go get` command.
If $GOPATH is not specified, $HOME/go will be used by default:
  https://golang.org/doc/code.html#GOPATH

You may wish to add the GOROOT-based install location to your PATH:
  export PATH=$PATH:/usr/local/opt/go/libexec/bin
==> Summary
🍺  /usr/local/Cellar/go/1.8.3: 7,035 files, 282.0MB

这时候就代表安装成功了,还需要完成写配置(Caveats已经提醒了)

你可以先使用


go version

看下,是否出现类似这样的显示:


go version go1.8.3 darwin/amd64

如果成功显示就代表安装成功了。(意思是本机安装的go语言版本是1.8.3 macos/64位)

3. 配置Go语言环境

  1. 根据提示,可以看出设置GOPATHGOROOT的环境变量,以及设置PATH
  2. 其中,GOPATH如果未指定,默认情况地址是『$HOME/go』,也就是你的『$HOME』变量指向的地址下的go文件夹,『$HOME』变量一般是:/Users/用户名。

3.1 查看Go语言环境变量

查看go语言的环境变量设置命令:


go env

GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/Sylvain/go"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.8.3/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.8.3/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/3b/fytpmrss5qx6x_ch0dxkxzh00000gn/T/go-build782221510=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"

3.2 修改环境变量

上边你可以看到GOPATH和GOROOT都已经有默认值了,如果需要修改的话,可以使用修改bash和zsh里的配置(有人说:二逼青年用 bash ,普通青年用 zsh ,文艺青年用 fish,我用zsh,看来我是普通青年,有空用fish装下文艺青年。)

因为我用的是zsh,所以我就说下zsh下怎么修改:


vim ~/.zshrc

将你所要改的配置填写到文件里,比如我对GOBIN做了设置:

export GOPATH=$HOME/go

export GOBIN=$GOPATH/bin

export PATH=$PATH:$GOBIN

然后『:wq』保存退出。使修改立刻生效:


source ~/.zshrc

最后在使用『go env』来确认下。这样环境变量的配置就完成了。

4. 测试运行


package main

import "fmt"

func main() {
	fmt.Println("Hello, World!\n 张小璋")
}

将这个文件保存成test.go,输入命令go run test.go来测试运行下。恩,我又学会了一门语言…………的『Hello,world』>_>

最后的成果:

 

#About Me

张小璋,野蛮生长成世界500强企业供应链金融产品经理的法语毕业生。微信公众号:张小璋碎碎念(ID: SylvainZhang )。
一直在互联网金融公司从事产品经理工作并负责互联网金融产品线,深耕互联网金融和区块链领域。「PMCAFF」、「人人都是产品经理」专栏作家、「PmTalk」签约作家。