2

导入名为的自定义子包qp

"pkgname/qp"

编译器抱怨

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

所以很明显包名似乎有问题qp,因为当我把它改成

qp "pkgname/qp"

错误消失了。

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

4

3 回答 3

7

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

package qp

他们可能指定了不同的包名称。导入包时,包声明中的名称是可用的名称;如果这与导入路径不匹配,您可能会收到这样的错误。

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

于 2013-02-19T17:58:24.503 回答
2

唯一具有特殊含义的包名称是“main”、“C”和以“_something”结尾的(测试和平台特定代码)。

您应该显示您声称由于名称而产生错误的代码。

于 2013-02-19T17:28:08.153 回答
1

包名称qp有效。例如,

package main

import "fmt"

import "local/qp"

func main() { fmt.Println(qp.QP()) }

编译并运行没有错误。

于 2013-02-19T17:47:25.857 回答