У меня есть небольшая программа, состоящая из трех файлов, принадлежащих одному пакету (главному), но когда я делаю «go build main.go», сборка не выполняется. Когда это был всего один файл (main.go), все работало нормально. Теперь, когда я приложил некоторые усилия, чтобы разделить код, похоже, что компилятор не может найти материал, который был взят из main.go и помещен в эти два других файла (которые находятся в том же каталоге, что и main.go) . Что приводит к ошибкам "неопределенного типа".
Как скомпилировать эту программу, состоящую из нескольких файлов?
источник
main.go
Напримерmore.go
, когда вы отделяете код от в , вы просто передаете этот файл вgo build
/go run
/go install
.Итак, если вы ранее запускали
go build main.go
ты сейчас просто
go build main.go more.go
В качестве дополнительной информации:
go build --help
состояния:
Обратите внимание, что
go build
иgo install
отличается отgo run
того, что первые два состояния ожидают имена пакетов в качестве аргументов, а последнее ожидает файлы go . Однако первые два также принимают файлы go, как и go install.Если вам интересно: build будет содержать только
build
пакеты / файлы,install
создаст объектные и двоичные файлы в вашем GOPATH, аrun
также скомпилирует и запустит вашу программу.источник
Вы также можете просто запустить
go build
в папке вашего проекта myproject / go / src / myprog
Затем вы можете просто ввести
запустить ваше приложение
источник
chmod +x
разрешение для этого файла на его запускНачиная с Go 1.11+, GOPATH больше не рекомендуется, новый способ - использовать модули Go.
Допустим, вы пишете программу под названием
simple
:Создайте каталог:
mkdir simple cd simple
Создайте новый модуль:
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.
Поместите все свои файлы в этот каталог.
Наконец, запустите:
В качестве альтернативы вы можете создать исполняемую программу, построив ее:
go build . # then: ./simple # if you're on xnix # or, just: simple # if you're on Windows
Для получения дополнительной информации вы можете прочитать это .
источник
Ты можешь использовать
go build *.go go run *.go
оба будут работать, также вы можете использовать
go build . go run .
источник
Это зависит от структуры вашего проекта. Но самое простое:
go build ./... -o ./myproject
затем беги
./myproject
.Предположим, структура вашего проекта выглядит так
- hello |- main.go
тогда вы просто переходите в каталог проекта и запускаете
go build -o ./myproject
затем запустите
./myproject
оболочку.или
# most easiest; builds and run simultaneously go run main.go
предположим, что ваш основной файл вложен в подкаталог, например
cmd
- hello |- cmd |- main.go
тогда ты побежишь
go run cmd/main.go
источник
Ага! Это очень просто, и здесь в игру вступает пакетная стратегия. насколько мне известно, есть три пути. структура папок:
GOPATH / src / github.com/ abc / myproject / adapter / main.go pkg1 pkg2 предупреждение: адаптер может содержать каталоги main only и sun для пакетов
go build main.go
go build main.go
go build myproject/adapter
EXE-файл будет создан в каталоге, в котором вы сейчас находитесь.
источник