尽管我已经GOPATH
正确设置,我还是不能让“去打造”或“去运行,”寻找我自己的包。 我究竟做错了什么?
$ echo $GOROOT
/usr/local/go
$ echo $GOPATH
/home/mitchell/go
$ cat ~/main.go
package main
import "foobar"
func main() { }
$ cat /home/mitchell/go/src/foobar.go
package foobar
$ go build main.go
main.go:3:8: import "foobar": cannot find package
这是行不通的,因为你的foobar.go
源文件不是一个目录名为foobar
。 go build
和go install
尝试匹配目录,而不是源文件。
- 设置
$GOPATH
有效的目录,如export GOPATH="$HOME/go"
- 移动
foobar.go
至$GOPATH/src/foobar/foobar.go
和建筑应该只是罚款。
其他推荐的步骤:
- 添加
$GOPATH/bin
到你的$PATH
是: PATH="$GOPATH/bin:$PATH"
- 移动
main.go
到的子文件夹$GOPATH/src
,如$GOPATH/src/test
-
go install test
现在应该创建一个可执行$GOPATH/bin
,可以通过输入被称为test
到你的终端。
编辑:既然你的意思GOPATH,看到fasmat的答案 (upvoted)
正如提到的“ 如何让我去找我的包? ”,你需要把一个包xxx
目录中的xxx
。
见转到语言规范 :
package math
一组文件共享相同的PackageName
形成计划的落实。
实现可能需要一个包所有源文件居住在同一个目录下。
该代码组织提到:
当构建导入包装程序“ widget
的” go
命令查找src/pkg/widget
转到根里面,然后,如果包源没有找到,它会搜索src/widget
,以便每个工作区里。
(一“工作区”是在路径条目GOPATH
:该变量可以参考为你的“多个路径src, bin, pkg
”是)
(原来的答复)
你也应该设置GOPATH
到〜/去,不GOROOT
,如“说明如何写Go代码 ”。
转到路径来解决import语句。 它是由执行,并在去/编译包记录。
该GOPATH
环境变量列出地方寻找Go代码。
在Unix,该值是一个冒号分隔的字符串。
在Windows中,该值是一个分号分隔的字符串。
在Plan 9,值是一个列表。
这是从不同的GOROOT
:
转到二进制分发假设它们将被安装在/usr/local/go
(或c:\Go
Windows下),但也可以在不同的位置进行安装。
如果你这样做,你将需要设置GOROOT
使用Go工具时环境变量到该目录。
TL; DR:按照惯例去! (教训硬盘的方式),检查旧版本去,并删除它们。 安装最新的。
对我来说,解决方案是不同的。 我曾在共享Linux服务器上,并验证我的后GOPATH
和其他环境变量几次它仍然没有奏效。 我遇到的几个错误,包括“无法找到包”和“无法识别的导入路径”。 试图与重新安装后, 该解决方案通过在指令golang.org (包括卸载部分)仍然遇到的问题。
我花了一些时间来认识到,仍有尚未卸载旧版本(运行go version
则which go
这让我再次... DAHH) 这个问题终于解决了。
您是否尝试过加入去的绝对目录到“路径”?
export PATH=$PATH:/directory/to/go/