Cómo escribir un simple programa Go

Un programa Go es un simple archivo de texto UTF-8 con extensión de archivo .go.

¿Qué es el programa Go?

Un archivo de programa Go es un simple archivo de texto UTF-8 con extensión de archivo .go. Por lo tanto, puede editar un programa Go en editores de texto simples como el bloc de notas, texto sublime e IDE como VSCode o WebStorm. También puede usar editores de texto de terminal como vim o nano, etc.

Si está utilizando VSCode, instale la extensión vscode-go. Esto lo ayudará a escribir un mejor código y facilitará el formateo / depuración.

Ir estructura del programa

Cada programa Go debe estar incluido en un paquete. Un programa Go ejecutable independiente debe tener una función principal y debe incluirse en el paquete principal. La función principal es el punto de entrada para la ejecución.

Un programa ejecutable independiente es un programa Go que se puede construir usando el comando go build o ejecutar usando el comando go run.
paquete principal
importar "fmt"
func main () {
    fmt.Println ("¡Hola, mundo!")
}

Del código anterior, definimos el paquete principal porque este es nuestro programa ejecutable independiente y también agregamos la función principal que se ejecutará cuando ejecutemos este programa. Hemos utilizado el paquete fmt de la biblioteca estándar de Go (viene con la instalación de Go). Para importar un paquete, utilizamos la palabra clave import.

El paquete fmt se usa aquí para imprimir mensajes en la salida estándar. Este paquete proporciona diferentes funciones para imprimir cualquier cosa a la salida estándar en diferentes formatos. En el ejemplo anterior, hemos utilizado la función Printf que imprime cualquier dato pasado como argumento a la salida / terminal estándar.

Ejecutando un programa Go

Para ejecutar cualquier programa Go (suponiendo que haya instalado Go en su sistema), debe indicar a Go Compiler que compile y ejecute un archivo de programa con la ruta de archivo dada. Si ponemos nuestro código anterior del programa Go en el archivo hello.go, entonces el comando para ejecutar este programa en el directorio de este archivo sería

$ ir a ejecutar hello.go

Esto dará el siguiente resultado a la consola

Hola Mundo!

Si desea ejecutar múltiples archivos Go a la vez, puede dar un patrón global o mencionar archivos en un comando

$ go run dir / *. go
$ go run dir / ** / *. go
$ ir a ejecutar file-a.go file-b.go file-c.go

Para crear un archivo ejecutable binario, puede usar el comando de compilación.

$ ir a construir hola.go

El comando anterior creará un archivo ejecutable binario hola en el directorio actual que puede ejecutar desde el terminal / símbolo del sistema.

$ ./hola

Para implementar archivos binarios en el directorio bin, puede usar el siguiente comando.

$ go install hello.go

Esto instalará el archivo binario hola en el directorio bin de su espacio de trabajo Go actual. Como el directorio bin está en PATH, podemos ejecutarlo desde cualquier lugar.

$ hola
Hola Mundo!

Comentarios

Si está acostumbrado a los comentarios de JavaScript o c ++, Go usa el mismo formato de comentario. Para comentarios de una sola línea, puede usar // comentario y para comentarios de bloque, puede usar / * comentario * /.

// Soy un comentario de una sola línea
// Soy otro comentario de una sola línea
/ *
    Soy un comentario en bloque.
    Y GoLang es asombroso.
    Dilo conmigo, GoLang es increíble.
* /

Punto y coma

Hasta ahora, es posible que haya notado que no hemos utilizado puntos y comas en nuestros programas, que son muy utilizados por otros lenguajes de programación como c, c ++ o JavaScript.

Al igual que C, la gramática formal de Go usa punto y coma para terminar las declaraciones, pero a diferencia de C, esos puntos y coma no aparecen en el código fuente. En cambio, el programa Go Lexer utiliza una regla simple para insertar puntos y comas automáticamente mientras escanea su programa Go, por lo que el código fuente está prácticamente libre de ellos.

La regla es esta. Si el último token antes de una nueva línea es un identificador (que incluye palabras como int y float64), un literal básico como un número o constante de cadena, o uno de los tokens a continuación

break continuar fallthrough return ++ -)}

entonces Lexer siempre inserta un punto y coma después del token. Esto podría resumirse como "si la nueva línea viene después de un token que podría terminar una declaración, inserte un punto y coma".

Por lo tanto, el código Go está libre de punto y coma. Si accidentalmente escribe punto y coma en el código fuente, el complemento VSCode los eliminará al guardar. También puede usar el comando gofmt para formatear su código de acuerdo con las especificaciones de go. El único lugar donde encontrará punto y coma es para los bucles donde las declaraciones deben terminarse deliberadamente usando; (punto y coma) y declaración de cambio.

Puedes usar puntos y comas cuando quieras, pero eso no será un código Go idiomático. Por ejemplo, podría escribir el siguiente código y el programa aún se ejecutará.

paquete principal
import ("fmt"; "matemáticas";);
func main () {
    fmt.Println (math.Sqrt (16));
};

Pero el siguiente código es una forma idiomática de escribir código go

paquete principal
importar(
    "fmt" //;
    "matemáticas"                          // ;
) //;
func main () {
    fmt.Println (math.Sqrt (16)) //;
} //;

Mejores prácticas

Go es un lenguaje muy limpio y sistemático. Por lo tanto, su código debe seguir las pautas de la comunidad y las especificaciones de Go. gofmt es una herramienta que formatea automáticamente el código fuente de Go, que puede ser útil para escribir Go idiomáticamente.

Ir efectivo

Siga la documentación de Effective Go para comprender estas prácticas estándar. https://golang.org/doc/effective_go.html

Ir al patio de recreo

La comunidad Go ha creado un IDE en línea para jugar con simples programas Go. Esto es como JSFiddle o CodePen pero estrictamente para el lenguaje de programación Go. Recomiendo no utilizar este IDE todas las veces porque está alojado en servidores potentes. En mi experiencia, obtuve diferentes experiencias y resultados en el sistema local y en este IDE al probar programas relacionados con la concurrencia. Pero para otros programas simples, adelante.

(GitHub / Twitter)