mac上go的下载安装教程

官网https://golang.google.cn/dl/下载,安装

环境变量配置

参考https://www.jianshu.com/p/5c1873eaf3ca

  • Bash

编辑~/.bash_profile文件(vim ~/.bash_profile,进入vim的正常模式,在正常模式中按下i, I, a, A等,进入插入模式),添加以下代码

export GOROOT=/usr/local/Cellar/go/1.10.3/libexec
//GOROOT是golang的安装路径,不需要配置,安装golang之后就已经有了 export GOPATH=/Users/chenxingyi/work/go
//GOPATH不是安装目录,并且不能和Go的安装目录一样
//可以配置多个GOPATH,多个GOPATH之间用 : 隔开
//例如:export //GOPATH=/Users/chenxingyi/work/goUsers/chenxingyi/work1/go
//配置结束可以在通过以下几种方式查询GOPATH
//1.在命令行输入 echo $GOPATH
//2.cd $GOPATH 进入GOPATH目录,pwd显示当前所在目录
//3.在配置文件中查看 export GOBIN= export PATH=$PATH:${GOPATH//://bin:}/bin
//bin 编译后生成的可执行文件,为了方便执行可执行文件
//可以把此目录加入到 $PATH 变量中
//如果有多个gopath,那么使用${GOPATH//://bin:}/bin添加所有的bin目录)

保存(在正常模式中,按下:(冒号)键,会进入命令模式,输入wq保存文件),然后执行

source ~/.bash_profile
  • Zsh

编辑~/.zshrc文件,添加以下代码

export GOROOT=/usr/local/Cellar/go/1.10.3/libexec

export GOPATH=/Users/chenxingyi/work/go

export GOBIN=

export PATH=$PATH:${GOPATH//://bin:}/bin

保存,然后执行

source ~/.zshrc

go编译和安装一个可运行的应用

  • GOPATH目录下约定有三个子目录:src(存放源代码)、pkg(存放编译后生成的文件)、bin(编译后生成的可执行文件)

  • 在go中,目录名(dirctory)一般和包名(package)保持一致,package是main表示可执行应用;package是其他表示应用包

  • 多级目录情况下包的引用:$GOPATH/src/github.com/astaxie/beedb 引用的路径:”github.com/astaxie/beedb”,即相对路径

    go编译和安装一个可运行的应用的流程如下(下面讲的操作是命令行的操作,有助于理解流程):

cd $GOPATH/pkg/${GOOS}_${GOARCH}
//pkg存储编译后生成的文件
//可以先cd $GOPATH/pkg
//然后ls 就可以看到${GOOS}_${GOARCH}具体是什么,我的是darwin_amd64
//可以看到mymath.a,这个.a文件是应用包

go程序的整体结构

bin/

​	mathapp

pkg/

​	平台名/ 如:darwin_amd64、linux_amd64

​		 mymath.a

​		 github.com/

​			  astaxie/

​				   beedb.a

src/

​	mathapp

​		  main.go

​	mymath/

​		  sqrt.go    

go获取远程包

go有一个获取远程数据包的工具go get,本质上可以理解为第一步是通过源码工具clone代码到src下面,然后执行 go install

go build命令

这个命令主要用于编译代码。在包的编译过程中,若有必要,会同时编译与之相关联的包。

  1. 如果是普通包,就像我们在1.2节中编写的mymath包那样,当你执行go build之后,它不会产生任何文件。如果你需要在$GOPATH/pkg下生成相应的应用包,那就得执行go install。
  2. 如果是main包,当你执行go build之后,它就会在当前目录下生成一个可执行文件,可直接在当前目录下执行文件。如果你需要在$GOPATH/bin下生成相应的文件,需要执行go install,或者使用go build -o 路径/a.exe。
  3. go build命令默认会编译当前目录下的所有go文件。如果某个项目文件夹下有多个文件,只想编译某个文件,就可在go build之后加上文件名,例如go build a.go;
  4. 你也可以指定编译输出的文件名,默认情况是你的package名(非main包),或者是第一个源文件的文件名(main包)。(注:实际上,package名在Go语言规范中指代码中“package”后使用的名称,此名称可以与文件夹名不同。默认生成的可执行文件名是文件夹名。)

go install命令

这个命令在内部实际上分成了两步操作:第一步是生成结果文件(可执行文件或者.a包),第二步会把编译好的结果移到

$GOPATH/pkg(普通应用包)或者$GOPATH/bin(可执行应用)。