Tengo un pequeño programa que consta de tres archivos, todos pertenecientes al mismo paquete (principal), pero cuando hago "go build main.go", la compilación no se realiza correctamente. Cuando era solo un archivo (main.go) todo funcionaba bien. Ahora que hice un esfuerzo para separar el código, parece que el compilador no puede encontrar las cosas que se sacaron de main.go y se colocaron en estos otros dos archivos (que residen en el mismo directorio que main.go) . Lo que da como resultado errores de "tipo" indefinido ".
¿Cómo compilar este programa que consta de varios archivos?
fuente
Cuando separa el código de
main.go
en, por ejemplomore.go
, simplemente pasa ese archivo ago build
/go run
/go install
también.Entonces, si previamente corriste
go build main.go
tu ahora simplemente
go build main.go more.go
Como más información:
go build --help
estados:
Tenga en cuenta que
go build
y sego install
diferencian dego run
que los dos primeros estados esperan nombres de paquetes como argumentos, mientras que el último espera archivos go . Sin embargo, los dos primeros también aceptarán archivos go como lo hace la instalación de go.Si se está preguntando: compilará solo
build
los paquetes / archivos,install
producirá objetos y archivos binarios en su GOPATH, yrun
compilará y ejecutará su programa.fuente
También podrías simplemente correr
go build
en la carpeta de su proyecto myproject / go / src / myprog
Entonces puedes escribir
para ejecutar tu aplicación
fuente
chmod +x
el permiso para ese archivo para ejecutarloDesde Go 1.11+, ya no se recomienda GOPATH, la nueva forma es usar los módulos Go.
Digamos que está escribiendo un programa llamado
simple
:Crea un directorio:
mkdir simple cd simple
Crea un nuevo módulo:
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.
Pon todos tus archivos en ese directorio.
Finalmente, ejecuta:
Alternativamente, puede crear un programa ejecutable compilándolo:
go build . # then: ./simple # if you're on xnix # or, just: simple # if you're on Windows
Para obtener más información, puede leer esto .
fuente
Puedes usar
go build *.go go run *.go
ambos funcionarán también puedes usar
go build . go run .
fuente
Depende de la estructura de su proyecto. Pero lo más sencillo es:
go build ./... -o ./myproject
luego corre
./myproject
.Suponga que la estructura de su proyecto se ve así
- hello |- main.go
luego simplemente ve al directorio del proyecto y ejecuta
go build -o ./myproject
luego ejecutar
./myproject
en shell.o
# most easiest; builds and run simultaneously go run main.go
suponga que su archivo principal está anidado en un subdirectorio como un
cmd
- hello |- cmd |- main.go
entonces correrás
go run cmd/main.go
fuente
¡Sip! Eso es muy sencillo y ahí es donde entra en juego la estrategia del paquete. hay tres formas de mi conocimiento. estructura de carpetas:
GOPATH / src / github.com/ abc / myproject / adaptor / main.go pkg1 pkg2 advertencia: el adaptador puede contener solo los directorios principal y sun del paquete
go build main.go
go build main.go
go build myproject/adapter
El archivo .exe se creará en el directorio en el que se encuentra actualmente.
fuente