Actualmente tengo un solo archivo en mi paquete principal llamado main.go
. ¿Cómo divido el contenido de main.go
en múltiples archivos sin crear un paquete separado porque el código no es reutilizable?
Quiero una estructura de directorio como esta:
$ ls foo
main.go
bar.go
bar.go
package main
import "fmt"
func Bar() {
fmt.Println("Bar")
}
Entonces en main.go
package main
func main() {
Bar()
}
Pero go run main.go
me da:
# command-line-arguments
./main.go:4:2: undefined: Bar
*_test.go
en su carpeta. Entonces necesitas (1)shopt -s ext glob
y (2)go run !(*_test).go
.go run ./cmd/myCmd/...
y funcionó para mí. Tal vez esta es la forma correcta cuando hay_test.go
archivos?go run ../your_folder
desde el interior de la carpeta de trabajo me funcionago run .
Actualización de agosto de 2018, con Go 1.11 , una sección "Ejecutar" dice:
Respuesta original de enero de 2015
Como se menciona en " ¿Cómo compilar el programa Go que consta de varios archivos? ",
go run
Espera una lista de archivos, ya que "compila y ejecuta elmain
paquete que comprende los archivos de origen Go".Así que ciertamente puedes dividir tu
main
paquete en varios archivos congo run
.Eso difiere de lo
go build/go install
que esperan los nombres de paquete (y no los nombres de archivo).Un simple
go build
produciría un ejecutable con el nombre de la carpeta principal.Tenga en cuenta que, como se ilustra en este hilo , a
go run *.go
no funcionaría en una sesión CMD de Windows, ya que el shell no hace la expansión comodín .fuente
run
el símbolo del sistema de Windows?Como se mencionó, puede decir,
go run *.go
pero para Windows solo puede enumerar los archivos de script (ya que * .go no funcionará):go run main.go other.go third.go
fuente
go run .
En mi opinión, la mejor respuesta a esta pregunta está oculta en los comentarios a la respuesta principal.
Solo ejecuta esto:
Esto ejecutará todos los archivos en el paquete principal, pero no dará un mensaje de error como
Felicitaciones a @BarthesSimpson
fuente
Para Windows, instale Cygwin y utilícelo en lugar del símbolo del sistema. "go run * .go" funcionará entonces.
fuente
cmd.exe
Si está intentando ejecutar múltiples archivos en localhost usando gorilla mux en go según la última versión (1.11). Intente usar cualquiera de los siguientes 2 comandos.
Asegúrese de estar en la carpeta de origen, es decir, vaya / src / FolderName antes de ejecutar el comando en la Terminal.
fuente