Go中的特殊包名称

Eri*_*ner 2 go

导入名为的自定义子包qp

"pkgname/qp"
Run Code Online (Sandbox Code Playgroud)

编译器抱怨

... imported and not used: "pkgname/qp"
... undefined: qp
Run Code Online (Sandbox Code Playgroud)

很明显它似乎有一个包名称的问题qp,因为当我改变它

qp "pkgname/qp"
Run Code Online (Sandbox Code Playgroud)

错误消失了.

是否有"保留"或无效的包名?为什么会这样?

and*_*olm 7

我猜测包qp中的文件不是以一行说的开头

package qp
Run Code Online (Sandbox Code Playgroud)

它们可能指定了不同的包名称.导入包时,包声明中的名称是可用的名称; 如果这与导入路径不匹配,则可能会出现这样的错误.

换句话说,您导入了"pkgname/qp",但编译器正在调用它,因为您在package语句中将其称为其他内容.您没有在代码中引用somethingElse,因此导入未使用.然后你引用qp,它没有在任何地方定义(即使它看起来像是),因为"pkgname/qp"没有定义qp.