Saya memiliki program kecil yang terdiri dari tiga file, semuanya termasuk dalam paket yang sama (utama), tetapi ketika saya melakukan "go build main.go", build tidak berhasil. Ketika itu hanya satu file (main.go) semuanya bekerja dengan baik. Sekarang setelah saya berusaha untuk memisahkan kode, sepertinya kompiler tidak dapat menemukan hal-hal yang dikeluarkan dari main.go dan dimasukkan ke dalam dua file lainnya (yang berada di direktori yang sama dengan main.go) . Yang menghasilkan kesalahan "jenis 'tidak ditentukan".
Bagaimana cara mengkompilasi program ini yang terdiri dari banyak file?
sumber
Saat Anda memisahkan kode dari
main.go
menjadi misalnyamore.go
, Anda cukup meneruskan file itu kego build
/go run
/go install
juga.Jadi jika sebelumnya Anda berlari
go build main.go
Anda sekarang sederhana
go build main.go more.go
Sebagai informasi lebih lanjut:
go build --help
menyatakan:
Perhatikan bahwa
go build
dango install
berbeda darigo run
dua status pertama yang mengharapkan nama paket sebagai argumen, sedangkan yang terakhir mengharapkan file go . Namun, dua yang pertama juga akan menerima file go seperti halnya go install.Jika Anda bertanya-tanya: build hanya akan
build
paket / file,install
akan menghasilkan objek dan file biner di GOPATH Anda, danrun
akan mengkompilasi dan menjalankan program Anda.sumber
Anda juga bisa lari
go build
di folder proyek Anda myproject / go / src / myprog
Kemudian Anda tinggal mengetik
untuk menjalankan aplikasi Anda
sumber
chmod +x
izin untuk file itu untuk menjalankannyaSejak Go 1.11+, GOPATH tidak lagi direkomendasikan, cara baru menggunakan Go Modules.
Misalkan Anda sedang menulis program bernama
simple
:Buat direktori:
mkdir simple cd simple
Buat modul baru:
go mod init github.com/username/simple # Here, the module name is: github.com/username/simple. # You're free to choose any module name. # It doesn't matter as long as it's unique. # It's better to be a URL: so it can be go-gettable.
Letakkan semua file Anda di direktori itu.
Terakhir, jalankan:
Alternatifnya, Anda dapat membuat program yang dapat dieksekusi dengan membangunnya:
go build . # then: ./simple # if you're on xnix # or, just: simple # if you're on Windows
Untuk informasi lebih lanjut, Anda dapat membaca ini .
sumber
Kamu dapat memakai
go build *.go go run *.go
keduanya akan bekerja juga dapat Anda gunakan
go build . go run .
sumber
Itu tergantung pada struktur proyek Anda. Tapi yang paling mudah adalah:
go build -o ./myproject ./...
lalu lari
./myproject
.Misalkan struktur proyek Anda terlihat seperti ini
- hello |- main.go
lalu Anda hanya pergi ke direktori proyek dan menjalankan
go build -o ./myproject
lalu jalankan
./myproject
di shell.atau
# most easiest; builds and run simultaneously go run main.go
misalkan file utama Anda berada di sub-direktori seperti
cmd
- hello |- cmd |- main.go
maka kamu akan lari
go run cmd/main.go
sumber
Ya! Itu sangat mudah dan di situlah strategi paket berperan. ada tiga cara untuk pengetahuan saya. struktur folder:
GOPATH / src / github.com/ abc / myproject / adapter / main.go pkg1 pkg2 peringatan: adaptor hanya dapat berisi paket utama dan direktori sun
go build main.go
go build main.go
go build myproject/adapter
File exe akan dibuat di direktori Anda saat ini.
sumber