Mac上go的下载安装教程
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编译和安装一个可运行的应用的流程如下(下面讲的操作是命令行的操作,有助于理解流程):
src下编写应用包mymath(如果在命令行下操作cd $GOPATH/src 进入编写源码的文件夹,mkdir mymath)
安装应用(两种方法):
进入对应的应用包目录(命令行下cd mymath),然后执行go install
在任意的目录执行如下代码go install mymath
安装完之后,我们可以进入目录:
cd $GOPATH/pkg/${GOOS}_${GOARCH}
//pkg存储编译后生成的文件
//可以先cd $GOPATH/pkg
//然后ls 就可以看到${GOOS}_${GOARCH}具体是什么,我的是darwin_amd64
//可以看到mymath.a,这个.a文件是应用包
调用这个应用包
新建 一个package是main应用包mathapp,import调用mymath,这个就是相对于$GOPATH/src的路径,如果是多级目录,import里面要引入多级目录(xxx/mymath),这时候可以直接go run 文件名.go 运行应用
编译程序
进入应用目录(main目录下),执行go build(将程序编译成二进制文件),在该目录下会生成一个mathapp的可执行文件(可以执行ls查看到该可执行文件)
/mathapp 输出结果(运行二进制文件)
安装该应用,进入该目录执行
go install,那么在"$GOPATH/bin/"下增加了一个可执行文件mathapp。设置环境变量的时候将GOPATH/bin加到我们的PATH里面了,这样可以在命令行输入如下命令就可以执行可执行文件mathapp
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 get -u 例:go get github.com/astaxie/beedb
go build命令
这个命令主要用于编译代码。在包的编译过程中,若有必要,会同时编译与之相关联的包。
- 如果是普通包,就像我们在1.2节中编写的mymath包那样,当你执行go build之后,它不会产生任何文件。如果你需要在$GOPATH/pkg下生成相应的应用包,那就得执行go install。
- 如果是main包,当你执行go build之后,它就会在当前目录下生成一个可执行文件,可直接在当前目录下执行文件。如果你需要在$GOPATH/bin下生成相应的文件,需要执行go install,或者使用go build -o 路径/a.exe。
- go build命令默认会编译当前目录下的所有go文件。如果某个项目文件夹下有多个文件,只想编译某个文件,就可在go build之后加上文件名,例如go build a.go;
- 你也可以指定编译输出的文件名,默认情况是你的package名(非main包),或者是第一个源文件的文件名(main包)。(注:实际上,package名在Go语言规范中指代码中“package”后使用的名称,此名称可以与文件夹名不同。默认生成的可执行文件名是文件夹名。)
go install命令
这个命令在内部实际上分成了两步操作:第一步是生成结果文件(可执行文件或者.a包),第二步会把编译好的结果移到
$GOPATH/pkg(普通应用包)或者$GOPATH/bin(可执行应用)。
参考书籍:https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/preface.md
Mac上go的下载安装教程的更多相关文章
- VMWare上Linux系统下载安装教程
原文链接:http://www.studyshare.cn/blog-front//software/details/1162/0 一.下载 linux镜像文件下载,此处只提供CentOS 6.8版本 ...
- Anaconda是什么?Anconda下载安装教程(1)
一.如果从事Python开发,配置环境需要安装两个包: 第一个安装开发工具,俗称IDE : 推荐使用 Pycharm 第二个安装开发工具包: Anaconda ps:Windows 下 Pycharm ...
- Anaconda是什么?Anconda下载安装教程(1)
一.如果从事Python开发,配置环境需要安装两个包: 第一个安装开发工具,俗称IDE : 推荐使用 Pycharm 第二个安装开发工具包: Anaconda ps:Windows 下 Pycharm ...
- Cygwin下载,安装教程
Cygwin是一个用于在Windows上模拟Linux环境的软件,由于工作上的需要,我要使用它,至于为什么用它,我在这里不做过多的解释,本文的目的,旨在于解决Cygwin安装上的问题. 原始的安装Cy ...
- axure7.0下载安装教程
做产品必需要有原型设计.我们公司称为做demo. demo你能够用ppt做,或者直接做图片.这样给甲方基本通只是. 也能够直接用html做,这样非常慢.尽管真正研发时或许能够复用: 平衡的方案,也是最 ...
- Adobe Photoshop CC 2019 for Mac v20.0.4 中文版安装教程
全新Adobe Photoshop CC 2019 mac特别版终于上线了,简称ps cc 2019,Adobe Photoshop CC 2019 for Mac v20.0.4 中文版安装教程分享 ...
- 如何在 Mac 上通过 Boot Camp 安装 Windows?
如何在 Mac 上通过 Boot Camp 安装 Windows? The following contents are chosen from the apple website, thanks f ...
- nodejs下载安装教程(XP版)
Node.js 下载安装教程(XP版) 参考自:https://www.cnblogs.com/zhouyu2017/p/6485265.html(win10版) 一.安装环境 Windows Xp( ...
- MySQL 8.0.13(Windows压缩版本)下载安装教程
MySQL下载安装教程 1.首先在百度上搜索mysql 2.点击链接进去,找到对应的路径 3.进去之后,可以看到版本是8.0.13,以及最下面有个Download按钮,点击下载 4.之后会跳转到开始下 ...
随机推荐
- DOM内容梳理2
JavaScript-DOM2(内容整理) 这两天新的知识有点多有点杂一时半会没有整理过来,以后不出意外会一直更行. js节点类型(NODETYPE) 查看节点类型 nodetype属性,返回的结果会 ...
- 文件搜索命令find
1.路径加文件名搜索(find): 查找的是etc目录下的以init为名字的文件. 加通配符后为模糊搜索,只要文件名中含有init即可. 查找etc目录下以init开头的七位文件名. 2.搜索时不区分 ...
- Linux常用命令合集
常用命令合集 命令选项和参数 Linux中的命令格式为:command [options] [arguments] //中括号表示可选的,即有些命令不需要选项也不需要参数,但有的命令在运行时需要多个 ...
- 使用nginx 正向代理暴露k8s service && pod ip 外部直接访问
有时在我们的实际开发中我们希望直接访问k8s service 暴露的服务,以及pod的ip 解决方法,实际上很多 nodeport ingress port-forword 实际上我们还有一种方法:正 ...
- rbenv mac&&linux 安装简单说明
mac 可以通过brew linux 官方提供了运行脚本 # with curl curl -fsSL https://github.com/rbenv/rbenv-installer/raw/mas ...
- circus 做为批处理的守护进程
circus 是集成了zeromq,使用python编写的一个进程以及socket 管理工具,使用circus 的进程管理,我们可以用来进行批任务的 处理,同时又能保证任务的准确 项目使用docker ...
- c博客06-结构
1.本章学习总结(2分) 1.1 学习内容总结 结构体如何定义.成员如何赋值 结构体数组排序做法 结构体指针怎么用 共用体.枚举类型做法 文件读写,文件中数据如何读进结构体数组 1.2 本章学习体会 ...
- Codeforces Round #595 (Div. 3)
A - Yet Another Dividing into Teams 题意:n个不同数,分尽可能少的组,要求组内没有两个人的差恰为1. 题解:奇偶分组. int a[200005]; void te ...
- QML学习(三)——<QML命名规范>
QML对象声明 QML对象特性一般使用下面的顺序进行构造: id 属性声明 信号声明 JavaScript函数 对象属性 子对象 状态 状态切换 为了获取更好的可读性,建议在不同部分之间添加一个空行. ...
- webpack系列之安装(Mac OS)
1. webpack介绍,可参考Webpack中文文档 2. 安装webpack之前先需要安装npm,可参看NPM的使用介绍 3. 安装webpack,可参考Webpack入门教程 ========= ...