- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在一个名为 db
的包中有两个文件,其中一个文件定义了一些未导出的变量。另一个是测试文件,需要像这样使用这些变量:
(这是项目的结构)
$GOPATH/src/gitlab.com/myname/projectdir
├── main.go
└── db
├── add.go
└── add_test.go
(这里是文件的一个简洁变体)
db/add.go
package db
func Add(x, y int) int {
return x + y
}
// some other functions that use a and b from `add_test.go`
db/add_test.go
package db
import (
"testing"
)
var (
a = 1
b = 2
)
// test function use variables from add.go
func testAdd(t *testing.T) {
result := add(a, b)
if result != 3 {
t.Error(err)
}
}
在 db/
目录中运行 go test
已通过,但是一旦我运行 go run main go
就会产生以下错误:
db/add.go:: undefined: a
db/add.go:: undefined: b
似乎 add.go
在构建过程中无法从 add_test.go
中找到 a
和 b
。
main.go
package main
import (
"fmt"
"gitlab.com/myname/projectdir/db"
)
func main() {
res := db.Add(1, 2)
fmt.Println(res)
}
这是因为 add_test.go
没有包含在构建过程中吗?
最佳答案
这就是 go 工具的工作方式。
_test.go
文件仅在您运行 go test
时编译。当一个包从另一个包导入时,它的 _test.go
文件中的任何代码都不会被使用。
尝试从 db 包中运行 go build
或 go install
。它会失败。
关于go - 构建期间包内的 undefined variable ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36638149/
我在一个 twig 模板中使用 Assetic 来指定要从我的包中使用的 2 个 JS 文件 { % javascripts '@JiraExtendedReportsBund
我正在做一个 VS 包,它在菜单中有一个 DynamicItemStart 按钮。我在 VS 启动时加载动态按钮的内容没有任何问题,但我试图在某些事件(例如打开项目)之后向其内容添加更多命令。我将新命
需求是从plsql调用java方法,我可以通过loadjava命令来实现它。我遵循的步骤是: 第 1 步:创建 Java Class/jar 文件并将其放置在 Unix 机器上 第2步:将Java C
我是一名优秀的程序员,十分优秀!