Come principiante, mi sono imbattuto in questo errore mentre stavo provando vari comandi go (build, run e install). In breve, non puoi installare un file nomefile.go . Puoi installare solo un pacchetto.
Questo creava confusione, perché avevo imparato che:
nate:~/work/src/dir $ go run hello/hello.go
hello, world.
funziona alla grande. Ma non sono riuscito a capire perché l' installazione non avrebbe funzionato:
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)
Non importa in quale directory mi trovassi:
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)
Questa confusione è dovuta al fatto che go run funziona solo con i file sorgenti di Go (nomi di file che terminano con .go) e go install accetta solo pacchetti. I pacchetti vengono denominati in base ai percorsi di importazione o al percorso del file system. Quindi:
nate:~/work/src/dir $ go install dir/hello
nate:~/work/src/dir $ go install ./hello/
nate:~/work/src/dir/hello $ go install .
funzionano tutti alla grande. Il primo si riferisce al pacchetto tramite il percorso di importazione, (dato che $ GOPATH = "/ home / nate / work", gli strumenti go cercano il codice sorgente in / home / nate / work / src), gli altri sono interpretati come file system percorsi a causa dei periodi principali.
Vedi anche i documenti GOPATH .
go installinstalla pacchetti non singoli file. Si prega di leggere tutto golang.org/cmd/go e vedere come impostare i file.