3 回答
TA贡献1858条经验 获得超8个赞
只需将您的包移动到 main.go 相同目录中的一个新文件夹中。请记住从 $GOPATH 的引用中导入新包。
例子:
user@user:~/p/go/test/so-multipack$ ls -R
.:
a main.go
./a:
a.go
user@user:~/p/go/test/so-multipack$ cat main.go
package main
import (
"../so-multipack/a"
)
func main(){
a.Hello()
}
user@user:~/p/go/test/so-multipack$ cat a/a.go
package a
import (
"fmt"
)
func Hello(){
fmt.Println("hello from a")
}
user@user:~/p/go/test/so-multipack$ go run main.go
hello from a
user@user:~/p/go/test/so-multipack$ go build
user@user:~/p/go/test/so-multipack$ ls
a main.go so-multipack
user@user:~/p/go/test/so-multipack$
TA贡献1776条经验 获得超12个赞
每个目录不能有两个包,因此会出现错误。所以@Larry Battle 所说的解决方案将您移动myproject.go
到一个新目录。
从如何编写 go 代码
Go 代码必须保存在工作区中。工作区是一个目录层次结构,其根目录包含三个目录:
src 包含组织成包的 Go 源文件(每个目录一个包),
pkg 包含包对象,以及
bin 包含可执行命令。
TA贡献1804条经验 获得超8个赞
在大多数情况下,没有。但是,单元测试有一个例外。
工作示例:
这是1 个目录 ( )中的 2 个不同的包 (mypackage和)。编译器不会抱怨这个。mypackage_testmypackage
mypackage 文件夹:
mypackage/
foo.go
foo_test.go
mypackage/foo.go:
package mypackage
func Add(a int, b int) int {
return a + b
}
mypackage/foo_test.go:
package mypackage_test
// Unit tests...
规则:
这两个包必须具有以下名称:
目录名称。
NameOfDirectory +
_test
._test
包中文件的名称必须以_test.go
如果您收到与 类似的令人困惑的编译器错误found packages "foo" and "bar"
,则您可能违反了这些规则中的一个或多个。
- 3 回答
- 0 关注
- 250 浏览
添加回答
举报