gpt4 book ai didi

go - 构建期间包内的 undefined variable

转载 作者:IT王子 更新时间:2023-10-29 01:58:55 25 4
gpt4 key购买 nike

我在一个名为 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 中找到 ab

ma​​in.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 buildgo install。它会失败。

关于go - 构建期间包内的 undefined variable ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36638149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com