librerias instalar golang go command-line-interface

golang - instalar go en windows



Golang: ejecuta todos los archivos.go dentro del directorio actual a través de la línea de comando(paquete de archivos múltiples) (9)

Soy un recién llegado a Go. Me gusta mucho el lenguaje, pero rápidamente me di cuenta de que necesitaba comenzar a dividir mis archivos debido a un aumento en el tamaño del programa.

go run main.go (con main.go siendo el archivo con mi función main ())

no funcionó y llegué a una barrera por un tiempo, porque no tenía idea de cómo hacer funcionar mi programa.

Algunas búsquedas rápidas me llevan a la respuesta de

go run main.go other.go ..

donde al escribir todos los archivos en los que está compuesto mi package main , podría ejecutar la programación. Sin embargo, esto es completamente engorroso y frustrante de hacer cada vez.

Escribo la siguiente pregunta autoevaluada para evitar que otras personas como yo toquemos esta barrera.


Aquí está mi solución:

go run $(find . -name "*.go" -and -not -name "*_test.go" -maxdepth 1)

Lo uso con un alias para facilitar la ejecución de aplicaciones de línea de comandos

alias gorun=''go run $(find . -name "*.go" -and -not -name "*_test.go" -maxdepth 1)'' $ gorun param1 param2


Como señala Nate Finch :

Go run is ... en realidad solo está destinado a ser utilizado en programas muy pequeños, que generalmente solo necesitan un solo archivo.

Incluso en Unix, go run *.go menudo no es correcto. En cualquier proyecto con pruebas unitarias (y cada proyecto debe tener pruebas unitarias), esto dará el error:

go run: cannot run *_test.go files (something_test.go)

También ignorará las restricciones de compilación, por _windows.go archivos _windows.go se compilarán (o intentarán compilarse) en Unix, que no es lo que usted desea.

Se ha debatido un poco acerca de cómo hacer go run el resto del comando go , y hay una CL abierta para él ( 5164 ). Actualmente está en consideración para Go 1.4. Mientras tanto, la solución recomendada en todas las plataformas es:

go build && ./<executable>


En Windows, generalmente solo agrego un poco de test.bat a todos mis directorios de proyectos:

go build ./{project_name}.exe go clean

Funciona lo suficientemente bien. Reemplace {project_name} con el nombre de su ejecutable, por supuesto. Y una vez que el ejecutable finaliza, el script por lotes pasa a la limpieza.


La mejor manera de hacerlo es ejecutarlo así:

go run !(*_test).go

Se salta todos los archivos de prueba, que es exactamente lo que necesita para evitar el error.

La otra sugerencia:

go build && ./<executable>

es un poco molesto Tienes que eliminar el ejecutable todo el tiempo para evitar ser marcado por git. Puedes ponerlo en gitignore, por supuesto, pero soy flojo y esto es un paso extra.


Para las personas que intentan usar go run combinadas con go generate una solución puede ser:

//go:generate sh -c "go run path/*.go"


Puede ejecutar todos los archivos .go , sin incluir las pruebas, utilizando esta construcción bash:

go run $(ls -1 *.go | grep -v _test.go)


Si entiendo bien tu pregunta, necesitas importar otro código como bibliotecas.

Pequeño ejemplo

./testing/main.go:

package main import "fmt" import L "testing/lib" func main() { fmt.Println("Hello from main()") L.Somefunc() }

./testing/lib/somelib.go:

package lib import "fmt" func Somefunc() { fmt.Println("Hello from Somefunc()") return }

Para iniciar, go run main.go


solo usa esto

go run *.go

funcionará suponiendo que no tiene ningún archivo de prueba


Sistemas relacionados con Unix

go run *.go será suficiente en la mayoría de los casos.

Continúe con el método siguiente si esto causa errores.

Los sistemas Windows (y en otros casos donde go run *.go no funciona)

La expansión del token no funciona en la línea de comandos de Windows y, por lo tanto, lo anterior no funcionará y mostrará un error. go run *.go también puede no funcionar en los sistemas operativos en algunos casos debido a las limitaciones actuales del compilador.

En estos casos, use

go build && foo.exe

donde foo.exe es el nombre del archivo .exe producido. Si tal vez no tienes idea de cuál es el nombre del ejecutable, primero

go build y verificar el nombre del archivo .exe producido. Después, use el método que incluye el nombre del archivo.

Estos 2 métodos construirán y ejecutarán todos los archivos .go dentro de su directorio actual con el mínimo esfuerzo.