Actualmente tengo un solo archivo en mi paquete principal llamado main.go. ¿Cómo divido el contenido de main.goen 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.gome da:
# command-line-arguments
./main.go:4:2: undefined: Bar

*_test.goen su carpeta. Entonces necesitas (1)shopt -s ext globy (2)go run !(*_test).go.go run ./cmd/myCmd/...y funcionó para mí. Tal vez esta es la forma correcta cuando hay_test.goarchivos?go run ../your_folderdesde 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 runEspera una lista de archivos, ya que "compila y ejecuta elmainpaquete que comprende los archivos de origen Go".Así que ciertamente puedes dividir tu
mainpaquete en varios archivos congo run.Eso difiere de lo
go build/go installque esperan los nombres de paquete (y no los nombres de archivo).Un simple
go buildproduciría un ejecutable con el nombre de la carpeta principal.Tenga en cuenta que, como se ilustra en este hilo , a
go run *.gono funcionaría en una sesión CMD de Windows, ya que el shell no hace la expansión comodín .fuente
runel símbolo del sistema de Windows?Como se mencionó, puede decir,
go run *.gopero para Windows solo puede enumerar los archivos de script (ya que * .go no funcionará):go run main.go other.go third.gofuente
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.exeSi 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