进行构建:“找不到包”(即使设置了GOPATH)

即使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


MMTTMM
浏览 338回答 3
3回答

明月笑刀无情

它不起作用,因为您的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/testgo install test现在应该在$GOPATH/bin其中创建一个可执行文件,可以通过test在终端中键入来调用该可执行文件。

偶然的你

由于您的意思是GOPATH,请参阅fasmat的答案(已批准)如“如何找回我的包裹? ”中所述,您需要将包裹xxx放在目录中xxx。请参阅Go语言规范:package math一组共享相同文件的文件PackageName形成了包的实现。一个实现可能要求包的所有源文件都驻留在同一目录中。该代码组织提到:在构建导入软件包“ widget”的程序时,该go命令会src/pkg/widget在Go根目录中查找,然后(如果在此处未找到软件包源)src/widget将按顺序在每个工作空间中进行搜索。(“工作区”是您中的路径条目GOPATH:该变量可以引用多个路径以使您的“ src, bin, pkg”成为)(原始答案)您还应该将其设置GOPATH为〜/ go,而不是GOROOT,如“如何编写Go代码”中所示。Go路径用于解析导入语句。它由go / build包实现并记录在文件中。在GOPATH环境变量列表地方寻找Go代码。在Unix上,该值是用冒号分隔的字符串。在Windows上,该值为分号分隔的字符串。在计划9中,该值是一个列表。不同于GOROOT:Go二进制发行版假定它们将被安装在Windows中/usr/local/go(或c:\Go在Windows下),但是可以将它们安装在其他位置。如果这样做,则GOROOT在使用Go工具时,需要将环境变量设置为该目录。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go