この実験を参照してください。パッケージ文と.goファイルのディレクトリとの関係
~/go/src$ tree -F
.
├── 1-foodir/
│ └── 2-foofile.go
└── demo.go
1 directory, 2 files
~/go/src$ cat demo.go
package main
import (
"fmt"
"1-foodir"
)
func main() {
fmt.Println(foopkg.FooFunc())
}
~/go/src$ cat 1-foodir/2-foofile.go
package foopkg
func FooFunc() string {
return "FooFunc"
}
~/go/src$ GOPATH=~/go go run demo.go
FooFunc
私は常にパッケージ名をインポートすると考えました。しかし、上記の例の は、パッケージディレクトリ名("1-foodir"
) を実際にインポートしていますが、そのパッケージ内にエクスポートされた名前を呼び出す際に、Goファイル(foopkg.FooFunc
)で宣言された パッケージ名を使用しています。
これは、JavaとPythonの世界から来てくれた私のような初心者のために混乱しています。 ここで、ディレクトリ名自体はパッケージに定義されている モジュール/クラスを修飾するために使用されるパッケージ名です。
import
ステートメントと の使用方法に違いがあるのは、パッケージに定義されている名前ですか? Goについてのこれらのことの背後にある規則 を説明できますか?
私の答えで私はそれを逃した道具のビットについて1つプラス。 – darethas