¿Cómo regreso desde main
con un código de salida como lo haría en C? Contexto: Estoy comprobando que hay un solo argumento de línea de comando, imprimiré el uso y devolveré un código de estado de error si el recuento de argumentos o el argumento no son válidos.¿Cómo regreso de func main en Go?
Respuesta
Go utiliza la función Exit para eso. Simplemente pase el código de estado como argumento y listo :)
La respuesta correcta está en el enlace de Matt Joiner. Esencialmente el siguiente fragmento. Uno tiene que asegurarse de que el resto del código hace no llamada os.Exit() en cualquier lugar, como flag.ExitOnError, log.Fatalf(), etc.
func main() { os.Exit(mainReturnWithCode()) }
func mainReturnWithCode() int {
// do stuff, defer functions, etc.
return exitcode // a suitable exit code
}
'return exitcode' produce un error de compilación. – sepehr
La intención es devolver, p. 1, 2 o 0 en lugar de 'exitcode', que solo significa un marcador de posición. –
- 1. ¿Cómo ejecutar mi código Go en Android?
- 2. ¿Cómo podemos usar canales en Go en lugar de mutex?
- 3. En busca de Go equivalente de scanf
- 4. ¿Cómo obtener el nombre de una función en Go?
- 5. Trabajando con tipos de funciones en Go
- 6. Referencia a literales de cadenas en Go
- 7. ¿Cómo puedo compilar un programa Go?
- 8. Envolviendo FUSE desde Go
- 9. Función de inserción llama en GO
- 10. Cómo convertir [4] uint8 en uint32 en Go?
- 11. haciendo algoritmos genéricos en go
- 12. Problemas sobre `slice` y` append` en Go
- 13. Go, go get, go install, paquetes locales y control de versión
- 14. Cómo autocompletar main() en eclipse?
- 15. regreso de una función void
- 16. ¿Podemos tener indicadores de función en Google Go?
- 17. ¿Cómo comparo dos funciones para la igualdad del puntero en la última versión de Go weekly?
- 18. Prioridad en Go, seleccione la solución de la solución
- 19. ¿Cómo manejar i18n en Go?
- 20. Imprimir en el registro utilizando Go Language Simple HTTP Server
- 21. ¿Cómo se usa un nombre de variable con el mismo nombre que un paquete en Go?
- 22. Uso de new vs var en Go
- 23. Cómo moq a Func
- 24. Dificultad con el paquete Go Rand
- 25. Dirección de un temporal en Go?
- 26. Cómo importar el paquete Go local en GAE
- 27. Clojure -main en IntelliJ
- 28. Regreso temprano de un constructor de Scala
- 29. ¿Diferencia entre void main e int main?
- 30. Inicialización de la matriz de Go
que pueden funcionar en muchos casos, pero no todos: Cosas como enjuagar un logger/cerrar archivos no sucederán cuando solo os.Exit(). Defers no se ejecuta. – Julian
Puede hacer algo como esto https://github.com/anacrolix/torrent/blob/master/cmd/torrentfs/main.go#L78 –
Solo tenga cuidado de que os.Exit() no ejecute las funciones diferidas ([doc] (https://golang.org/pkg/os/#Exit)). – sepehr