Go中的特殊包名称

时间:2013-02-19 16:21:37

标签: go

使用

导入名为qp的自定义子包时
"pkgname/qp"

编译器抱怨

... imported and not used: "pkgname/qp"
... undefined: qp

很明显,包名qp似乎有问题,因为当我将其更改为

qp "pkgname/qp"

错误消失了。

是否有“保留”或无效的包裹名称?为什么会这样?

3 个答案:

答案 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()) }

编译并运行,没有错误。