New Go程序员在这里 - 提前为任何滥用的术语或惯例打破道歉 - 我仍然在快速掌握语言。我试图在我的go程序中使用这个sql lite包,而有时我的程序将因以下错误而失败
# command-line-arguments
/usr/local/go/pkg/tool/darwin_amd64/link: cannot open file
/usr/local/go/pkg/darwin_amd64/github.com/mattn/go-sqlite3.a: open
/usr/local/go/pkg/darwin_amd64/github.com/mattn/go-sqlite3.a: no such
file or directory
当我尝试使用go run main.go
运行程序时会发生这种情况。 go-sqlite3.a
文件存在于我的工作区包中,但由于某种原因,不想加载它。当我尝试从 - 子包导入模块时,这似乎只会发生(?不确定这是否是正确的术语)。
如果我在单个main.go
文件中执行以下操作
package main
import(
"fmt"
_ "github.com/mattn/go-sqlite3"
)
func main(){
fmt.Println("Hello World from main()")
}
一切正常。但是,如果我将一个包添加到我的程序中,那么文件结构就像这样布局
main.go
test/test.go
我在这个
中包含了我的包(在main.go
中)
import(
"fmt"
"./test"
)
func main(){
test.Test()
}
我的包(test/test.go
)看起来像这样
package test
import(
"fmt"
_ "github.com/mattn/go-sqlite3"
)
func Test(){
fmt.Println("Hello World from Test() in test/test.go")
}
然后go run main.go
失败并显示上述错误消息。
有谁知道这里发生了什么?在我的导入中使用./
是不对的?我曾尝试在线阅读,但我找不到能够解决我所看到的行为及其原因的问题。