Sebagai seorang pemula, saya menemukan kesalahan ini ketika saya mencoba berbagai perintah go (membangun, menjalankan, dan menginstal). Singkatnya, Anda tidak bisa pergi menginstal sebuah filename.go . Anda hanya dapat menginstal paket.
Ini membingungkan, karena saya telah mengetahui bahwa:
nate:~/work/src/dir $ go run hello/hello.go
hello, world.
bekerja dengan baik. Tetapi saya tidak tahu mengapa pemasangan tidak berhasil:
nate:~/work/src/dir $ go install hello/hello.go
go install: no install location for .go files listed on command line (GOBIN not set)
nate:~/work/src/dir $ go install hello
can't load package: package hello: cannot find package "hello" in any of:
/opt/go/src/hello (from $GOROOT)
/home/ubuntu/work/src/hello (from $GOPATH)
Tidak peduli di direktori mana saya berada:
nate:~/work/src/dir $ cd hello
nate:~/work/src/dir/hello $ go install hello.go
go install: no install location for .go files listed on command line (GOBIN not set)
nate:~/work/src/dir/hello $ go install hello
can't load package: package hello: cannot find package "hello" in any of:
/opt/go/src/hello (from $GOROOT)
/home/ubuntu/work/src/hello (from $GOPATH)
Kebingungan ini karena go run hanya berfungsi dengan file sumber Go (nama file yang diakhiri dengan .go) dan go install hanya menerima paket. Paket diberi nama berdasarkan jalur impor atau jalur sistem file. Jadi:
nate:~/work/src/dir $ go install dir/hello
nate:~/work/src/dir $ go install ./hello/
nate:~/work/src/dir/hello $ go install .
semuanya bekerja dengan baik. Yang pertama merujuk ke paket dengan jalur impor, (mengingat bahwa $ GOPATH = "/ home / nate / work", alat go mencari kode sumber di / home / nate / work / src), yang lainnya diartikan sebagai sistem file jalur karena periode terkemuka.
Lihat juga dokumen GOPATH .
go installmenginstal paket bukan file individual. Silakan baca semua golang.org/cmd/go dan lihat bagaimana mengatur file Anda.