这是目录树:
+/project
+---/bin
+---/pkg
+---/src
+---/client_test
+---client_test.go
+---main.go
在main.go中:
package main
import ("client_test")
func main() {
client_test.Send()
}
在client_test.go中:
package client_test
func Send() {
}
错误:
src/main.go|8| imported and not used: "client_test"
src/main.go|32| undefined: client_test
我已经阅读了How to use custom packages in golang?,我认为我有这样的解决方案,但我只是不知道如何解决这个问题。请帮忙。
go env:
GOARCH="amd64"
GOBIN="/usr/local/go/bin"
GOCHAR="6"
GOEXE=""
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-common"
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/staff/projects/Minigame_Server" (that's exactly my working directory)
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CGO_ENABLED="1"
答案 0 :(得分:11)
...名称与文件模式匹配的文件“* _test.go”...可以 包含测试函数,基准函数和示例函数。
请勿使用保留名称。例如,将client_test
替换为clienttest
。
答案 1 :(得分:1)
好的,我终于找到了我的环境出了什么问题:
由于我使用OS X所以我使用.pkg文件安装go,而GOROOT是“/ usr / local / go”
然后我读了另一个关于GO installtion的假教程,它说我必须在我的〜/ .profile中定义GOROOT,所以我在〜/ .profile里面添加了“GOROOT =”/ usr / local / go“,然后一切都去了错。
仔细阅读官方文件后我发现了这个:
Go二进制发行版假设它们将安装在/ usr / local / go(或Windows下的c:\ Go)中,但可以将它们安装在不同的位置。如果这样做,则在使用Go工具时需要将GOROOT环境变量设置为该目录。
例如,如果您安装Go到您的主目录,您应该将以下命令添加到$ HOME / .profile:
导出GOROOT = $ HOME / go export PATH = $ PATH:$ GOROOT / bin
但问题是,它没有提到如果你在.pkg安装后在〜/ .profile中添加GOROOT将会发生什么,它也没有说你不能这样做。
这是我的〜/ .profile看起来像现在(正在纠正):
导出GOPATH = $ HOME / projects / export PATH = $ PATH:$ GOPATH / bin
BTW:您不需要在工作区下创建/项目文件夹。根据{{3}},它也没有说你必须:
工作区目录树现在如下所示:
bin/
hello # command executable
pkg/
linux_amd64/
example/
newmath.a # package object
src/
example/
hello/
hello.go # command source
newmath/
sqrt.go # package source
答案 2 :(得分:0)
如果你的$ GOPATH是“/ Users / staff / projects / Minigame_Server”,你的“项目”绝对路径应该是“/ Users / staff / projects / Minigame_Server / src / project”。
您的导入应为import "project/src/client_test"
。
或者,您似乎想要做什么,假设您在“项目”下有与Go相关的子目录“/ pkg”和“/ bin”,请将您的GOPATH设置为“/ Users / staff / projects / Minigame_Server /项目“
然后你可以import "client_test"
。基本思路是Go会将导入字符串附加到$ GOPATH / src /.
(有点模棱两可,我同意)doc在这里:http://golang.org/doc/code.html#tmp_2。我的猜测是你已经阅读了它,这就是为什么你创建了/ pkg,/ bin和/ src子目录,但是catch应该是GOPATH的位置,然后是Go在查找导入时自动添加的隐式子级别(/ src自动添加),然后按原样导入字符串。
答案 3 :(得分:-1)
您可以使用以下可以使用的代码在main中导入包 进口( “FMT” “./client_test”) 在主包中