Golang导入包时遇到错误怎么办
Golang导入包时遇到错误怎么办 我有一个Go应用程序,其结构如下:
rschluet-general-ledger (项目目录)
-administration
-administration.go
-archithreadsdb
-archithreadsdb.go
-main.go
我在许多其他包中也使用了相同的设置,它们都能正常工作。
main.go 中包含:
import (
"rschluet-general-ledger/archithreadsdb"
)
main()
uniqueIdentifier := archithreadsdb.NewUniqueIdentifier()
fmt.Println(uniqueIdentifier)
...
我使用相同结构和导入方式设置的其他包都能正常工作。但在这个特定情况下,我遇到了以下错误:
./main.go:4:2: imported and not used: "rschluet-general-ledger/archithreadsdb" as archithreadsDB
./main.go:105:22: undefined: archithreadsdb
显然,archithreadsdb 确实被使用了。如果我在 archithreadsdb 中故意创建一个错误,该错误会被报告:
archithreadsdb/archithreadsdb.go:17:2: undefined: cxcxcvx
所以我知道编译器首先处理 archithreadsdb 时没有错误(在移除故意制造的错之后)。
我尝试从 administration 包中调用 archithreadsdb,得到了相同的错误。
更多关于Golang导入包时遇到错误怎么办的实战教程也可以访问 https://www.itying.com/category-94-b0.html
感谢,Norbert,有时候你确实需要另一双眼睛来看待一个问题。我想我的眼睛对大小写不敏感。我把所有的 archithreadsdb 都改成了 arDB,现在可以正常工作了,而且使用起来也更方便。
从错误信息来看,Go编译器将导入的包识别为archithreadsDB(大写DB),但代码中使用的是archithreadsdb(小写db)。这通常是由于包声明与导入路径不匹配导致的。
检查archithreadsdb/archithreadsdb.go文件中的包声明:
// 错误示例:包名与导入路径大小写不一致
package archithreadsDB // 大写DB
// 正确应该为:
package archithreadsdb // 小写db
同时确认你的目录结构确实是archithreadsdb(全小写)。如果目录名是archithreadsDB,需要修改导入语句:
// 如果目录名是archithreadsDB
import (
"rschluet-general-ledger/archithreadsDB"
)
func main() {
uniqueIdentifier := archithreadsDB.NewUniqueIdentifier() // 注意大写DB
fmt.Println(uniqueIdentifier)
}
另外,确保你的go.mod文件正确配置:
module rschluet-general-ledger
go 1.21
如果问题仍然存在,可以尝试清理并重新构建:
go clean -cache
go mod tidy
go build
检查archithreadsdb包中是否正确定义了NewUniqueIdentifier函数:
// archithreadsdb/archithreadsdb.go
package archithreadsdb
func NewUniqueIdentifier() string {
return "unique-id"
}


