使用
导入名为qp
的自定义子包时
"pkgname/qp"
编译器抱怨
... imported and not used: "pkgname/qp"
... undefined: qp
很明显,包名qp
似乎有问题,因为当我将其更改为
qp "pkgname/qp"
错误消失了。
是否有“保留”或无效的包裹名称?为什么会这样?
答案 0 :(得分:7)
我猜测包qp中的文件不是以一行
开头package qp
他们可能指定了不同的包名称。导入包时,包声明中的名称是可用的名称;如果这与导入路径不匹配,则可能会出现这样的错误。
换句话说,你导入了“pkgname / qp”,但编译器正在调用它,因为你在package语句中调用了其他东西。您没有在代码中引用somethingElse,因此导入未使用。然后你引用qp,它没有在任何地方定义(即使它看起来像是),因为“pkgname / qp”没有定义qp。
答案 1 :(得分:2)
唯一具有特殊含义的包名称是“main”,“C”以及以“_something”结尾的那些(测试和平台特定代码)。
您应该显示由于名称而声称产生错误的代码。
答案 2 :(得分:1)
包名称qp
有效。例如,
package main
import "fmt"
import "local/qp"
func main() { fmt.Println(qp.QP()) }
编译并运行,没有错误。