したがって、3つのファイルで構成される小さなプログラムがあり、すべて同じパッケージ(メイン)に属しますが、「go build main.go」を実行すると、ビルドが成功しません。 1つのファイル(main.go)であった場合、すべて正常に機能しました。コードを分離するためにいくらか努力したので、コンパイラはmain.goから取り出されたこれらの2つのファイル(main.goと同じディレクトリにある)に置かれたものを見つけることができないようです。 。その結果、「undefined 'type'」エラーが発生します。
GOPATH変数の設定について読んだので、試しました
set GOPATH=%cd%
go build main.go
しかし、それもうまくいきませんでした。
どんな助けも大歓迎です。
Myprogと呼ばれるプログラムを書いていると仮定すると:
すべてのファイルをこのようなディレクトリに配置します
myproject/go/src/myprog/xxx.go
次に、myproject/go
をGOPATHに追加します
そして走る
go install myprog
このようにして、必要に応じてmyproject/go/srcに他のパッケージとプログラムを追加できます。
リファレンス: http://golang.org/doc/code.html
(このドキュメントは常に新参者には見逃されており、最初はよく理解されていません。GoチームIMOの最大の注目を集めるはずです)
コードをmain.go
から例えばmore.go
に分離する場合、単にそのファイルをgo build
/go run
/go install
に渡すだけです。
以前に実行した場合
go build main.go
あなたは今、単に
go build main.go more.go
詳細情報として:
go build --help
状態:
If the arguments are a list of .go files, build treats them as a list
of source files specifying a single package.
go build
およびgo install
は、最初の2つの状態が引数としてパッケージ名を期待し、後者がgoファイルを期待するという点でgo run
と異なります。。ただし、最初の2つはgoインストールと同様にgoファイルも受け入れます。
疑問がある場合:buildはパッケージ/ファイルをbuild
だけ、install
はGOPATHでオブジェクトとバイナリファイルを生成し、run
はプログラムをコンパイルして実行します。
また、単に実行することができます
go build
プロジェクトフォルダーmyproject/go/src/myprog
次に、入力するだけです
./myprog
アプリを実行する
プロジェクトの構造に依存します。しかし、最も簡単なのは:
go build ./... -o ./myproject
次に./myproject
を実行します。
プロジェクト構造が次のようになっているとします
- hello
|- main.go
次に、プロジェクトディレクトリに移動して実行します
go build -o ./myproject
次に、シェルで./myproject
を実行します。
または
# most easiest; builds and run simultaneously
go run main.go
メインファイルがcmd
などのサブディレクトリにネストされているとします
- hello
|- cmd
|- main.go
その後、実行します
go run cmd/main.go
使用できます
go build *.go
go run *.go
どちらも使用できます
go build .
go run .
うん!これは非常に簡単であり、パッケージ戦略が効果を発揮します。私の知識には3つの方法があります。フォルダー構造:
GOPATH/src/github.com/ abc/myproject/adapter/main.go pkg1 pkg2警告:アダプターにはパッケージmainのみとSunディレクトリを含めることができます
go build main.go
go build main.go
go build myproject/adapter
exeファイルは現在のディレクトリに作成されます。