Obecnie mam jeden plik w moim głównym pakiecie o nazwie main.go
. Jak podzielić zawartość main.go
na wiele plików bez tworzenia oddzielnego pakietu, ponieważ kodu nie można użyć ponownie.
Chcę mieć taką strukturę katalogów:
$ ls foo
main.go
bar.go
bar.go
package main
import "fmt"
func Bar() {
fmt.Println("Bar")
}
Następnie w main.go
package main
func main() {
Bar()
}
Ale go run main.go
daje mi:
# command-line-arguments
./main.go:4:2: undefined: Bar
*_test.go
w swoim folderze. Następnie musisz (1)shopt -s ext glob
i (2)go run !(*_test).go
.go run ./cmd/myCmd/...
i to zadziałało. Może to jest właściwy sposób, gdy są_test.go
pliki?go run ../your_folder
z wnętrza folderu roboczego działa dla mniego run .
Aktualizacja z sierpnia 2018 r. Wraz z wersją Go 1.11 w sekcji „Uruchom” :
Oryginalna odpowiedź styczeń 2015
Jak wspomniano w „ Jak skompilować program Go składający się z wielu plików? ”,
go run
Oczekuje listy plików, ponieważ „kompiluje i uruchamiamain
pakiet zawierający nazwane pliki źródłowe Go”.Więc z pewnością możesz podzielić
main
pakiet na kilka plików za pomocągo run
.To różni się od tego,
go build/go install
który oczekuje nazw pakietów (a nie nazw plików).Prosty
go build
dałby plik wykonywalny nazwany na podstawie folderu nadrzędnego.Zauważ, że, jak zilustrowano w tym wątku , a
go run *.go
nie działałby w sesji Windows CMD, ponieważ powłoka nie wykonuje ekspansji symboli wieloznacznych .źródło
run
pomocą wiersza polecenia systemu Windows?Jak wspomniano, możesz powiedzieć,
go run *.go
ale w systemie Windows możesz po prostu wyświetlić listę plików skryptów (ponieważ * .go nie będzie działać) -go run main.go other.go third.go
źródło
go run .
Moim zdaniem najlepszą odpowiedź na to pytanie kryje się w komentarzach do górnej odpowiedzi.
Po prostu uruchom to:
Spowoduje to uruchomienie wszystkich plików w głównym pakiecie, ale nie wyświetli komunikatu o błędzie, takiego jak
Uznanie dla @BarthesSimpson
źródło
W systemie Windows zainstaluj Cygwin i używaj go zamiast wiersza poleceń. Wtedy "go run * .go" będzie działać.
źródło
cmd.exe
Jeśli próbujesz uruchomić wiele plików na hoście lokalnym przy użyciu programu Gorilla mux w go zgodnie z najnowszą wersją (1.11). Spróbuj użyć dowolnego z następujących 2 poleceń.
Upewnij się, że jesteś w folderze źródłowym, tj. Go / src / FolderName przed wykonaniem polecenia w terminalu.
źródło