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」をインポートしましたが、パッケージステートメントで別の名前を付けたため、コンパイラはそれを別の名前で呼び出しています。コードでsomethingElseを参照していないため、インポートは使用されません。次に、「pkgname / qp」は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 に答える