2017-01-28 4 views
3

私は、すべての.goディレクトリ内のファイルは同じパッケージを指定する必要があることを知った。GO - ファイルのパッケージ名

githubのから exampleの下に考慮

fogleman/nes/ 
    nes/ 
    apu.go 
    cartridge.go 
    console.go 
    controller.go 
    cpu.go 
    filter.go 
    ines.go 
    mapper.go 
    mapper1.go 
    mapper2.go 
    mapper3.go 
    mapper4.go 
    mapper7.go 
    memory.go 
    palette.go 
    ppu.go 
    ui/ 
    util/ 
    .gitignore  
    LICENSE.md  
    README.md 
    main.go 

ので、ディレクトリ内のすべてのファイル.go../fogleman/nes/nes)は(ディレクトリ名と同じ)パッケージ名nesを持っています。

同様に、ディレクトリ内の.goファイルのすべてがのパッケージ名ui(ディレクトリ名と同じ)です。二つのファイルの下に考慮


、私は疑問を持っている、ディレクトリ内

1)

roms.goファイル(../fogleman/nes/util))は、ディレクトリ名とは異なるパッケージ名main()

2を持っています

main.goディレクトリ内のファイル(../fogleman/nes)は、パッケージmain(ディレクトリ名とは異なります)。

質問:

パッケージ名(mainが)そのディレクトリ名と異なっているのはなぜ?

+0

ディレクトリ名とパッケージ名が一致する必要はありません、彼らは通常、慣例により行います。 – JimB

+0

@JimB 'roms.go'シンボルを別のファイルにインポートする必要がある場合、' import github.com/fogleman/nes/util/main'と言う必要がありますか? – overexchange

+0

パス単位でのみインポートできますが、メインパッケージはインポートできません。 'main'はプログラムエントリーポイントです。 – JimB

答えて

2

私はこのレポの作者がroms.goをテスト用の別のプログラムとして実行することを意図していると考えています。このファイルをパッケージmainに入れないと、これを実行できませんでした。あなたは、ルートプロジェクトディレクトリにある場合:

cd util

go run roms.go path/to/roms/dir

+0

GOはディレクトリ( '../fogleman/nes/util /')やディレクトリ( '../fogleman/nes /')に複数の(複数の) '.go'ファイルを' package main'で許可しますか? – overexchange

関連する問題