环境变量GOPATH使用试验
Intel Core i5-8250U,Windows 10家庭中文版,Visual Studio Code 1.26.1
中午的时候,自己把环境变量GOBIN给清空了。刚刚继续工作时发生了异常:使用Visual Studio Code写的代码,无法使用go install编译运行(或生成可执行文件)。
package main var x, y int
var (
a int
b bool
) var c, d int = 1, 2
var e, f = 123, "hello" func main() {
g, h := 321, "olleh" println(x, y, a, b, c, d, e, f, g, h)
}
eg1.go
源文件位于项目的src下的app3文件夹中——D:\ws\golang\prj1\src\app3。
在终端进入prj1的src目录,执行go install .\app3,结果发生下面的错误——应用程序app3的目录位于GOPATH之外,,此时的GOPATH是默认值,只有一个目录,位于C:\users\<username>\go:
>go install .\app3
go install: no install location for directory D:\ws\golang\prj1\src\app3 outside GOPATH
For more details see: 'go help gopath'
进入app3的目录执行go install eg1.go也不行——提示没有设置GOBIN,因为自己前面清空了它:
app3>go install eg1.go
go install: no install location for .go files listed on command line (GOBIN not set)
在前面一篇博文的更新中了解到,设置了GOBIN可以解决第二个问题。那么,第一个问题怎么解决呢?
通过看一些关于GO环境变量的文章(参考链接),知道GOPATH可以设置多个值,好吧,把当前项目加入到GOPATH中,再测试一下吧!
注意,在这之前,自己尝试把eg1.go放到GOPATH下的src中的一个文件夹中,此时执行go install是 成功的,所以才会有上面的想法 和 本文。
在当前终端把eg1.go所在项目路径 附加到GOPATH中,再测试go install,结果,成功!可执行文件被放到了项目的bin文件中了。
D:\ws\golang\prj1>echo %GOPATH%
C:\Users\log\go D:\ws\golang\prj1>set GOPATH=%GOPATH%;D:\ws\golang\prj1 D:\ws\golang\prj1>echo %GOPATH%
C:\Users\log\go;D:\ws\golang\prj1 D:\ws\golang\prj1>go install .\src\app3 D:\ws\golang\prj1>dir bin
驱动器 D 中的卷是 新加卷
卷的序列号是 BAD3-E0B3 D:\ws\golang\prj1\bin 的目录 2018/09/10 15:36 <DIR> .
2018/09/10 15:36 <DIR> ..
2018/09/10 15:04 1,021,440 app2.exe
2018/09/10 15:36 1,021,440 app3.exe D:\ws\golang\prj1>.\bin\app3.exe
0 0 0 false 1 2 123 hello 321 olleh
上面执行成功!
前面提到的是两个错误:go install后跟文件夹名-失败,go install后跟源文件名-失败。上面设置GOPATH仅仅解决了第一个问题,那么,第二个问题怎么解决呢?
根据错误提示,设置GOBIN!GOBIN设置在哪里,go install后的可执行文件就出现在哪里!(前一篇博文的更新部分有介绍)。
查看go install的用法:其最后一个参数时packages(多个包吗?),而不是源文件,,这部分内容自己还没弄明白,后续再dig。
>go help install
usage: go install [-i] [build flags] [packages] Install compiles and installs the packages named by the import paths. The -i flag installs the dependencies of the named packages as well. For more about the build flags, see 'go help build'.
For more about specifying packages, see 'go help packages'. See also: go build, go get, go clean.
测试使用go install同时安装多个应用程序:果然可以!
D:\ws\golang\prj1\src>go install app1 app2 app3 D:\ws\golang\prj1\src>cd .. D:\ws\golang\prj1>cd bin D:\ws\golang\prj1\bin>dir
驱动器 D 中的卷是 新加卷
卷的序列号是 BAD3-E0B3 D:\ws\golang\prj1\bin 的目录 2018/09/10 15:47 <DIR> .
2018/09/10 15:47 <DIR> ..
2018/09/10 15:47 1,952,768 app1.exe
2018/09/10 15:47 1,021,440 app2.exe
2018/09/10 15:47 1,021,440 app3.exe
3 个文件 3,995,648 字节
2 个目录 78,701,293,568 可用字节
通过本次试验,自己也理解了Eclipse里面的一个Go配置项的意义了:Also add project location to GOPATH, ...

参考链接
1.GOROOT、GOPATH、GOBIN、project目录
后记
对于Go命令工具,自己还需要更熟悉才是。那样的话,可以少走不少弯路的。
下面的教程挺好的,需要看看:
GO 命令教程(http://wiki.jikexueyuan.com/project/go-command-tutorial/)
环境变量GOPATH使用试验的更多相关文章
- go环境变量配置 (GOROOT和GOPATH)
GOROOT就是go的安装路径在~/.bash_profile中添加下面语句: GOROOT=/usr/local/go export GOROOT 当然, 要执行go命令和go工具, 就要配置go的 ...
- go环境变量配置 (GOROOT和GOPATH)的区别和含义
GOROOT就是go的安装路径 在~/.bash_profile中添加下面语句: GOROOT=/usr/local/go export GOROOT 当然, 要执行go命令和go工具, 就要配置go ...
- [daily][emacs][go] 配置emacs go-mode的编辑环境以及环境变量问题
1. 安装go 安装go-mode 使用emacs编辑go代码的时候,你需要有正常可运行的go环境. 并且有emacs的go-mode package https://www.emacswiki.or ...
- linux /mac 下 go环境变量配置
安装了go语言之后,还要设置路径,如果不设置路径,则执行 go 的时候会提示 go: command not found,提示的意思是没有这个命令行.这个是因为还没有设置PATH路径. 设置路径的方式 ...
- go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量
go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量 下载安装:go get github.com/astaxie/beego 首页 - beego: 简约 & 强大并存 ...
- GO环境变量设置
GOROOT就是go的安装路径在~/.bash_profile中添加下面语句: GOROOT=/usr/local/go export GOROOT 当然, 要执行go命令和go工具, 就要配置go的 ...
- Golang 环境变量及工作区概念
GOROOT go的安装路径 GOPATH 可以有多个目录,每个目录就是一个工作区,放置源码文件,以及安装后的归档文件和可执行文件: 第一个工作区比较重要,go get会自动从一些主流公用代码仓库下载 ...
- 安装 go和beego后的环境变量设置
简介 之前有几次因为环境变量设置的问题 损失了一些时间,特在此做记录 安装golang 可参考官方Getting Started,但有时候有问题. 解压 tar -C /usr/local -xzf ...
- golang 环境变量讲解
以下配置以MAC 下配置为例,但其他环境下大同小异. GOROOT就是go的安装路径在~/.bash_profile中添加下面语句: GOROOT=/usr/local/go export GOROO ...
随机推荐
- php排序学习之-冒泡排序
原理:对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面. (以下都是升序排列,即从小到大排列) 举例说明: $arr = array(6, 3, 8, 2, 9, 1); $a ...
- Delphi7如何实现让Tedit显示文字垂直居中(上下居中)
通过下面的组件,可以在输入文字的时候自动垂直居中 直接把下面代码保存到Unit1.pas即可------------------------------------------ unit Unit1; ...
- Vue入门---属性、style和class绑定方法
一 .用对象的方法绑定class <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- shell之三大文本处理工具grep、sed及awk
grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...
- 详细理解servlet实现的三种方式和生命周期
阅读目录 开发servlet的三种方式 理解实现servlet接口的方式,理解servlet生命周期 Servlet接口有五个方法 继承GenericServlet 继承HttpServlet 现在很 ...
- NOI前各种Idea总结以及各种文本乱堆
转载请注明原文地址:https://www.cnblogs.com/LadyLex/p/9227267.html 不过这篇的确没什么*用了转转吧 2018-6-24 关于一类延迟标记(来自UR14 思 ...
- hdwiki 前后台版权信息在哪修改
hdwiki 前台copyright 信息在 view/default/footer.htm 搜索footer-phdwiki 后台copyright 信息在 view/default/admin_m ...
- MT【166】青蛙跳
(2015浙江重点中学协作体一模) 设ABCDEF为正六边形,一只青蛙开始在顶点A处,它每次可随意地跳到相邻两顶点之一.若在5次之内跳到D点,则停止跳动:若5次之内不能到达D点,则跳完5次也停止跳动. ...
- 洛谷 P4070 [SDOI2016]生成魔咒 解题报告
P4070 [SDOI2016]生成魔咒 题目描述 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 \(1\).\(2\) 拼凑起来形成一个魔咒串 \([1,2]\). 一个魔咒 ...
- go gcc
http://www.cnblogs.com/zkweb/p/7880099.html