В настоящее время в моем основном пакете есть один файл с именем main.go
. Как разделить содержимое main.go
на несколько файлов, не создавая отдельный пакет, поскольку код нельзя использовать повторно.
Мне нужна такая структура каталогов:
$ ls foo
main.go
bar.go
bar.go
package main
import "fmt"
func Bar() {
fmt.Println("Bar")
}
Затем в main.go
package main
func main() {
Bar()
}
Но go run main.go
дает мне:
# command-line-arguments
./main.go:4:2: undefined: Bar
*_test.go
в папке. Затем вам нужно выполнить (1)shopt -s ext glob
и (2)go run !(*_test).go
.go run ./cmd/myCmd/...
и у меня это сработало. Может это правильный путь при наличии_test.go
файлов?go run ../your_folder
изнутри рабочая папка у меня работаетgo run .
Обновление августа 2018 года с Go 1.11 , в разделе «Выполнить» указано:
Оригинальный ответ январь 2015 г.
Как упоминалось в разделе « Как скомпилировать программу Go, состоящую из нескольких файлов? »,
go run
Ожидает список файлов, поскольку он «компилирует и запускаетmain
пакет, содержащий названные исходные файлы Go».Таким образом, вы, безусловно, можете разделить свой
main
пакет на несколько файлов с помощьюgo run
.Это отличается от
go build/go install
ожидаемых имен пакетов (а не имен файлов).Простой
go build
создаст исполняемый файл с именем родительской папки.Обратите внимание, что, как показано в этом потоке , a
go run *.go
не будет работать в сеансе Windows CMD, поскольку оболочка не выполняет подстановочные знаки .источник
run
помощью командной строки Windows?На мой взгляд, лучший ответ на этот вопрос скрыт в комментариях к верхнему ответу.
Просто запустите это:
go run .
Это запустит все файлы в основном пакете, но не выдаст сообщение об ошибке, например
go run: cannot run *_test.go files (main_test.go)
Престижность @BarthesSimpson
источник
Как уже упоминалось, вы можете сказать,
go run *.go
но для Windows вы можете просто перечислить файлы сценариев (поскольку * .go не будет работать) -go run main.go other.go third.go
источник
go run .
Для Windows установите Cygwin и используйте его вместо командной строки. Тогда будет работать "go run * .go".
источник
cmd.exe
Если вы пытаетесь запустить несколько файлов на локальном хосте, используя gorilla mux, используйте последнюю версию (1.11). Попробуйте использовать любую из следующих 2 команд.
Убедитесь, что вы находитесь в исходной папке, то есть go / src / FolderName, прежде чем выполнять команду в Терминале.
источник
Первый способ сделать это - запустить
go run *.go
Другой способ - создать exe-файл.
go build
Затем запустите этот файл .exe
источник