web-dev-qa-db-ja.com

複数のファイルで構成されるGoプログラムをコンパイルする方法は?

したがって、3つのファイルで構成される小さなプログラムがあり、すべて同じパッケージ(メイン)に属しますが、「go build main.go」を実行すると、ビルドが成功しません。 1つのファイル(main.go)であった場合、すべて正常に機能しました。コードを分離するためにいくらか努力したので、コンパイラはmain.goから取り出されたこれらの2つのファイル(main.goと同じディレクトリにある)に置かれたものを見つけることができないようです。 。その結果、「undefined 'type'」エラーが発生します。

GOPATH変数の設定について読んだので、試しました

set GOPATH=%cd%
go build main.go

しかし、それもうまくいきませんでした。

どんな助けも大歓迎です。

69
Vitaly

Myprogと呼ばれるプログラムを書いていると仮定すると:

すべてのファイルをこのようなディレクトリに配置します

myproject/go/src/myprog/xxx.go

次に、myproject/goをGOPATHに追加します

そして走る

go install myprog

このようにして、必要に応じてmyproject/go/srcに他のパッケージとプログラムを追加できます。

リファレンス: http://golang.org/doc/code.html

(このドキュメントは常に新参者には見逃されており、最初はよく理解されていません。GoチームIMOの最大の注目を集めるはずです)

74
Denys Séguret

コードを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はプログラムをコンパイルして実行します。

61
Kissaki

また、単に実行することができます

go build

プロジェクトフォルダーmyproject/go/src/myprog

次に、入力するだけです

./myprog

アプリを実行する

27

プロジェクトの構造に依存します。しかし、最も簡単なのは:

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
3
alamin

使用できます

go build *.go 
go run *.go

どちらも使用できます

go build .
go run .
1
Tushar Saha

うん!これは非常に簡単であり、パッケージ戦略が効果を発揮します。私の知識には3つの方法があります。フォルダー構造:

GOPATH/src/github.com/ abc/myproject/adapter/main.go pkg1 pkg2警告:アダプターにはパッケージmainのみとSunディレクトリを含めることができます

  1. 「アダプター」フォルダーに移動します。実行:
    go build main.go
  1. 「アダプター」フォルダーに移動します。実行:
    go build main.go
  1. gOPATH/srcに移動し、パッケージメインへの相対パスを認識します(ここでは「myproject/adapter」)。実行:
    go build myproject/adapter

exeファイルは現在のディレクトリに作成されます。

0
Sayan Dey