设置Golang的GOPATH

chenjh213 · 2016-05-31 21:00:01 · 2417 次点击 · 预计阅读时间 2 分钟 · 大约1分钟之前 开始浏览

这是一个创建于 2016-05-31 21:00:01 的文章,其中的信息可能已经有所发展或是发生改变。

Go是一门全新的静态类型开发语言,具有自动垃圾回收丰富的内置类型,函数多返回值错误处理匿名函数,并发编程反射等特性.

golang安装

golang下载

sudo tar -zvxf go1.6.2.linux-amd64.tar.gz
sudo mv go /usr/local/go
#设置环境变量
vi /etc/profile
export GOROOT=/usr/local/go  #设置为go安装的路径
export GOPATH=$HOME/gocode   #默认安装包的路径
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
source /etc/profile

GOPATH设置

go命令依赖一个重要的环境变量:$GOPATH
GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候Windows是分号;,Linux系统是冒号:
当有多个GOPATH时默认将go get获取的包存放在第一个目录下
$GOPATH目录约定有三个子目录

  • src存放源代码(比如:.go .c .h .s等)
  • pkg编译时生成的中间文件(比如:.a)
  • bin编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中,如果有多个gopath,那么使用${GOPATH//://bin:}/bin添加所有的bin目录)

代码目录结构规划

GOPATH下的src目录就是接下来开发程序的主要目录,所有的源码都是放在这个目录下面,那么一般我们的做法就是一个目录一个项目,例如: $GOPATH/src/mymath 表示mymath这个应用包或者可执行应用,这个根据package是main还是其他来决定,main的话就是可执行应用,其他的话就是应用包,这个会在后续详细介绍package。

下面我就以mymath为例来讲述如何编写应用包,执行如下代码
新建一个自己golang代码的路径myGolang

export GOPATH=$HOME/gocode:$HOME/myGolang
export PATH=$PATH:$GOROOT/bin:${GOPATH//://bin:}/bin
cd $GOPATH/src
mkdir mymath

新建文件fabnacci.go

package mymathfunc Fabnacci(num int) int {if num == 0 || num == 1 {return num}return Fabnacci(num -1) + Fabnacci(num -2)
}

编译应用

上面我们已经建立了自己的应用包,如何进行编译安装呢?有两种方式可以进行安装

  • 进入对于的安装包目录,然后执行go install
  • 在任意的目录下指定需要编译的包go build mymath
    编译后可以在$GOPATH/pkg/${GOOS}_${GOARCH}下看到mymath.a文件
    .a文件是应用包,那么我们如何进行调用呢?
    接下来我们新建一个应用程序来调用这个应用包
cd $GOPATH/src
mkdir mathapp

新建Fabnacci.go文件

package mainimport ("mymath""fmt""os""strconv"
)
func main() {if len(os.Args) < 2 {fmt.Println("input number")return}num, err := strconv.Atoi(os.Args[1])if err != nil {fmt.Println("input must be number", err)return}fmt.Println("Fabnacci :", num, mymath.Fabnacci(num))
}

如何编译程序呢?进入该应用目录,然后执行go build,在该目录下会生成mathapp可执行文件

time ./mathapp 45
Fabnacci : 45 1134903170real    0m10.836s
user    0m10.208s
sys 0m0.032s

如何安装应用程序?进入该目录执行go install,那么会在$GOPATH/bin/增加一个可执行文件mathapp
$GOPATH/bin/目录已经加入了环境变量,可以直接运行mathapp

参照:

  • GOPATH与工作空间

设置Golang的GOPATH相关推荐

  1. goland设置goroot_解决GOPATH在GOLAND中的坑

    首先我的环境已配置好: GO的目录结构是: add.go package calc //函数名必须大写首字母,不然外部包找不到 func Add(a int,b int)(int){ return a ...

  2. go设置多个GOPATH

    文章目录 go设置多个GOPATH go设置多个GOPATH linux: GOPATH="/home/www/gopath1:/home/www/gopath2" windows ...

  3. Golang之GOPATH变量

    Linux系统下,配置~/.bashrc文件 export GOPATH=/home/username/yourpath 如果工程目录中需要新的工具,例如: goyacc protoc-gen-go ...

  4. go 设置 GOROOT 和 GOPATH

    点击在我的博客 xuxusheng.com 中查看,有更好的排版哦~ 发表失败全部丢失,写完了又重写一遍,csdn 都没个自动保存功能,强烈吐槽 go 里面有两个非常重要的环境变量 GOROOT 和 ...

  5. Golang中GOPATH在Goland的理解

    https://www.cnblogs.com/lurenq/p/10524647.html

  6. go-golang环境二进制安装(windows、linux 安装go、go安装)

    文章目录 一.go环境二进制安装 1. Windows 系统下安装 1.1 Windows 配置Go环境变量 2. Linux下安装go 2.1 官网安装包安装 go1.15.5安装 安装go 1.1 ...

  7. Golang中的GoPath和GoModule

    文章目录 什么是GoPath? 什么是GoModule? GoModule的设置 GoModule无法下载国外的依赖包问题 在Golang中,有两个概念非常容易弄错,第一个就是GoPath,第二个则是 ...

  8. goland 设置project gopath

    用goland打开别人的go项目.可能碰到下面的问题goland cannot find package "server/common/config" in any of: 这是因 ...

  9. 【golang程序包推荐分享】go-ini、viper、godoc

    [golang程序包推荐&分享]go-ini.viper.godoc 一.go-ini 1.程序包简介 2.下载安装 3.简单使用[截取自官网] 二.viper 1.程序包简介 2.下载安装 ...

最新文章

  1. java joptionpanel_JOptionPane用法--java
  2. 《从0到1学习Flink》—— Apache Flink 介绍
  3. ie6常见css bug
  4. Linux OpenGL 实践篇-2 创建一个窗口
  5. 【案例】数据量猛增,BI分析效率太低怎么破?
  6. Python的bool类型
  7. java怎么用doss窗口_GitHub - doss128/symphony: 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台。...
  8. 安装mysql 5.7.19 winx64解压缩版
  9. mysql在window的使用记录
  10. 应届毕业生面试软件测试工程师时应注意什么?
  11. CTGU实验5_2-创建借书触发器
  12. Activiti 会签/或签 设计思路
  13. ubantu 安装 mosquitto时 connection refused 的解决办法
  14. 平安产险深圳分公司:绿色保险亮相第十五届深圳国际金融博览会
  15. 深入理解蓝牙BLE之“BQB认证”
  16. 你永远不知道明天和意外哪个先到来
  17. 操作系统笔记 清华大学陈渝
  18. android 小白点代码,Android实现小圆点显示未读功能
  19. Windows 10共享打印机无法打印 \ office/wps运行时出现卡死并显示“未响应“的解决方法
  20. 15款js编辑器大全 收藏

热门文章

  1. 世界-中国-省-市-县 天气预报
  2. 利用OpenCV实现人眼的检测与跟踪
  3. android 应用uid,android adb 获取所有app 的uid
  4. 用linux搭建ntp服务,使用linux配置NTP Server
  5. 包头昆区多大面积_两套楼房,放了整整19车垃圾!包头这对母女的“特殊癖好”,让邻居彻底不能忍了.........
  6. 华为首款搭载鸿蒙os 荣耀智慧屏,全球首款搭载鸿蒙OS终端! 荣耀智慧屏将在今天拉开面纱...
  7. linux查看动态库导出的符号,Linux下控制动态库导出
  8. mysql的acid_什么是数据库ACID?
  9. leetcode算法题--一周中的第几天
  10. pythonhistogram教程_OpenCV-Python 直方图-4:直方图反投影 | 二十九