环境变量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 ...
 
随机推荐
- node模块加载机制。
 - MySQL查询优化:LIMIT 1避免全表扫描
			
在某些情况下,如果明知道查询结果只有一个,SQL语句中使用LIMIT 1会提高查询效率. 例如下面的用户表(主键id,邮箱,密码): create table t_user(id int primar ...
 - Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量
			
大家在中学就已经学过变量的概念了.例如:我们令 x = 100,则可以推出 x*2 = 200 试试下面这段 Python 代码 import turtle turtle.shape("tu ...
 - requestMapping设置客户端访问地址
 - Eclipse Job
			
Job可以我们基于Eclipse的Java程序中,我们有很多种方式提供多任务的实现.熟悉Java的朋友立即会想到Java的Thread类,这是Java中使 用最多的一个实现多任务的类.Eclipse平 ...
 - 【刷题】BZOJ 2134 单选错位
			
Description Input n很大,为了避免读入耗时太多, 输入文件只有5个整数参数n, A, B, C, a1, 由上交的程序产生数列a. 下面给出pascal/C/C++的读入语句和产生序 ...
 - BZOJ 3167: [Heoi2013]Sao
			
3167: [Heoi2013]Sao Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 96 Solved: 36[Submit][Status][D ...
 - debian9使用systemd部署etcd集群
			
在centos上,是可以直接使用yum安装etcd的: # yum list | grep etcd etcd.x86_64 3.2.9-3.el7 @extras 但是,在debian上却没有安装包 ...
 - JDK 目录结构
			
c:\jdk1.7.0: JDK软件安装根目录.包含版权,许可证和自述文件等. c:\jdk1.7.0\bin: 包含JDK中开发工具的可执行文件(在PATH环境变量中应该包含此目录). c:\jdk ...
 - HDU 6170 dp
			
Two strings Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...