El Hola Mundo de Go son siete líneas, y cada una tiene un motivo. Lo que ha cambiado desde que se escribió esta página no es el código, sino cómo se organiza un proyecto: hoy todo empieza con go mod init.
También te puede interesar
El programa
package main
import "fmt"
func main() {
fmt.Println("Hola Mundo")
}| Línea | Qué significa |
|---|---|
package main | este archivo es un programa, no una biblioteca |
import "fmt" | el paquete de la biblioteca estándar para escribir y dar formato |
func main() | por donde empieza el programa; no recibe ni devuelve nada |
fmt.Println | escribe y añade un salto de línea; la mayúscula inicial significa que es pública |
Dos reglas de Go que se ven ya aquí: la llave de apertura va en la misma línea que la función —si la bajas, no compila—, y un import que no se usa también es un error de compilación, no un aviso.
El módulo
mkdir hola && cd hola go mod init ejemplo/hola
salidago: creating new go.mod: module ejemplo/hola
go.modmodule ejemplo/hola go 1.27.2
El go.mod dice cómo se llama tu módulo y con qué versión de Go se escribió. Sin él, Go no sabe qué está compilando:
salidago: go.mod file not found in current directory or any parent directory; see 'go help modules'
go run src/ejemplos/Main.go, con una carpeta src. Era el modo antiguo, el GOPATH, en el que todos los proyectos tenían que vivir dentro de una carpeta concreta. Desde Go 1.16 los módulos son lo normal y el proyecto puede estar donde quieras.Ejecutar o compilar
go run . go build -o hola . ./hola
salidaHola Mundo 2.3M hola
go run . compila en una carpeta temporal y ejecuta: para probar. go build deja un ejecutable de 2,3 MB que funciona solo, sin instalar Go ni nada más en la máquina donde lo lleves. Es la razón por la que tantas herramientas de línea de órdenes están escritas en Go.
Compilar para otro sistema
GOOS=windows GOARCH=amd64 go build -o hola.exe .
salida2.4M hola.exe
Desde Linux, un ejecutable de Windows. Sin instalar nada. Los dos primeros bytes del archivo son MZ, la firma de los ejecutables de Windows. Con GOOS=darwin sale uno para macOS, y con GOARCH=arm64, para procesadores ARM, como los de una Raspberry Pi o los Mac recientes.
Más información en inglés: Hello World in Golang.
Todo el código se compiló y se ejecutó con Go 1.27 en un contenedor limpio antes de publicar esta página; las salidas están copiadas de esa ejecución.