Primero mire la puerta: ¿cuál es la estructura de un programa Go?

Escriba y ejecute su primer programa Go


Primero, necesitamos crear un archivo fuente llamado main.go.

Aquí, necesito hablarte sobre las convenciones de nomenclatura de Go. Los archivos fuente de Go siempre se nombran con palabras cortas en minúsculas y terminan con la extensión .go.

Si desea usar varias palabras en el nombre del archivo de origen, generalmente concatenamos las palabras múltiples directamente como el nombre del archivo de origen en lugar de usar otros separadores, como guiones bajos. Es decir, generalmente usamos helloworld.go como nombre de archivo en lugar de hello_world.go.

Esto se debe a que el separador de guión bajo tiene un papel especial en la denominación de los archivos fuente de Go, que explicaremos en detalle en futuras explicaciones. En general, tratamos de no usar más de dos combinaciones de palabras para los nombres de archivo, de lo contrario, será difícil diferenciarlos.

Ahora, puede abrir el archivo main.go que acaba de crear y escribir el siguiente código:

package main

import "fmt"

func main() {
    fmt.Println("hello, world")
}

Después de escribir, guardamos el archivo y volvemos a la ventana del terminal, luego, en un sistema Linux o macOS, puede compilar y ejecutar el archivo escribiendo este comando:

$go build main.go
$./main
hello, world

Si está en el sistema Windows, debe reemplazar ./main en el comando anterior con .\main.exe.

Sin embargo, sin importar qué sistema operativo estés usando, deberías ver la cadena "hola, mundo" impresa en la terminal en este punto. Si no ve este resultado, hay un problema con el proceso de instalación de Go o hay un problema con la edición del archivo de origen y debe volver a verificar. Si todo va bien, ¡enhorabuena! ¡Ha completado su primer programa Go y es oficialmente un desarrollador Go! ¡Bienvenido al mundo del lenguaje Go! 

Estructura del programa de muestra "hola, mundo"


Ahora, volvamos atrás y echemos un vistazo más de cerca a lo que está pasando en el programa de ejemplo "hola, mundo". La primera parte notable es esta:

package main

Esta línea de código define un paquete en Go. Un paquete es la unidad básica del lenguaje Go, generalmente nombrada con una sola palabra en minúsculas. Un programa Go es esencialmente una colección de paquetes. Todo el código de Go tiene su propio paquete , aquí todo el código para nuestro ejemplo de "hola, mundo" está en un paquete llamado main. El paquete principal es un paquete especial en Go, y solo se permite un paquete llamado principal en todo el programa Go.

El código principal en el paquete principal es una función llamada main:

func main() {
    fmt.Println("hello, world")
}

La función principal aquí es especial: cuando ejecuta un programa Go ejecutable, todo el código comenzará a ejecutarse desde esta función de entrada. La primera línea de este código declara una función llamada main sin parámetros y valor devuelto. Si algún día necesita declarar parámetros a una función, debe ponerlos entre paréntesis ().

Además, el par de llaves {} se utilizan para marcar el cuerpo de la función, y Go requiere que todos los cuerpos de las funciones estén entre llaves. Por convención, recomendamos colocar la llave de apertura en la misma línea que la declaración de la función, separada por espacios . El lenguaje Go tiene un conjunto integrado de estilos de código comúnmente conocidos como convenciones de la comunidad Go, y se proporciona una herramienta llamada Gofmt con el paquete de instalación, que puede ayudarlo a formatear automáticamente el código en el estilo acordado. 

Bien, volvamos al tema, echemos un vistazo al código en el cuerpo de la función principal:

fmt.Println("hello, world")

Esta línea de código ha hecho todo el trabajo de todo el programa de muestra: enviar la cadena a la salida estándar (stdout) de la terminal. Pero aquí hay algunos detalles más a los que debe prestar atención.

Nota 1: el estilo de código estándar de Go utiliza tabulaciones en lugar de espacios para la sangría . Por supuesto, el formato de este estilo de código también se puede realizar mediante gofmt.

Nota 2: llamamos a una función llamada Println, que se encuentra en el paquete fmt de la biblioteca estándar de Go. Para usar la función Println definida por el paquete fmt en nuestro programa de muestra, en realidad hacemos dos pasos.

El primer paso es importar la ruta del paquete del paquete fmt a través de la declaración de importación al comienzo del archivo fuente:

import "fmt"

El segundo paso es llamar a la función Println a través del identificador calificado fmt en el cuerpo de la función principal. Aunque el literal "fmt" se usa en ambos lugares, el significado del literal "fmt" es diferente en estos dos lugares:

  • "fmt" en la línea de importación "fmt" representa la ruta de importación (Importación) del paquete, que representa el directorio fmt en la biblioteca estándar , y el significado de la declaración de importación completa es importar el paquete en el directorio fmt de la biblioteca estándar ;
  • El "fmt" en la línea de llamada de la función fmt.Println representa el nombre del paquete. 

Por lo general, el nombre del último segmento de la ruta de importación es el mismo que el nombre del paquete, por lo que también es fácil malinterpretar que "fmt" en la declaración de importación se refiere al nombre del paquete, lo cual no es el caso.

La última razón por la que el cuerpo de la función principal puede llamar a la función Println del paquete fmt es que la primera letra del nombre de la función Println está en mayúscula. En el lenguaje Go solo se exporta (Exportado) un identificador con letra mayúscula y se puede ver por código fuera del paquete, si la primera letra es minúscula significa que el identificador está limitado al paquete en el que se declara. visible. 

Nota 3: Volvamos a la implementación del cuerpo de la función principal y concentrémonos en la cadena "hola, mundo" pasada a la función Println. Encontrará que la cadena que pasamos es la cadena que vemos en la salida estándar de la terminal después de ejecutar el programa.

Este "lo que ves es lo que obtienes" se beneficia del hecho de que el propio archivo de origen de Go utiliza el conjunto de caracteres Unicode y utiliza el método de codificación de caracteres estándar UTF-8 , que es coherente con el conjunto de caracteres utilizado por el entorno en el que se encuentra el se ejecuta el programa compilado Es consistente con el método de codificación de caracteres. 

Aquí, incluso si reemplazamos "hola, mundo" en el código con la cadena china "Hola, mundo", así:

package main

import "fmt"

func main() {
    fmt.Println("你好,世界")
}

Todavía podemos ver la salida correcta en la salida estándar del terminal.

Finalmente, no sé si habrás notado que en el código fuente de todo nuestro programa de ejemplo, nunca hemos usado un punto y coma para marcar el final de una declaración, lo que parece diferente de los lenguajes compilados tradicionales como C, ¿C++ y Java?

Sin embargo, de hecho, la especificación de la gramática formal del lenguaje Go utiliza un punto y coma ";" como identificador final. Entonces, ¿por qué rara vez usamos y vemos puntos y comas en el código Go? Esto se debe a que la mayoría de los puntos y comas son opcionales y a menudo se omiten, pero el compilador de Go inserta automáticamente estos puntos y comas omitidos cuando se compila el código fuente.

Después de analizar la estructura de este código, hablemos de la compilación del lenguaje Go. Aunque debería haber ejecutado el programa de muestra "hola, mundo" en este momento, en este proceso hay un paso importante: la compilación, ahora lo llevaré a ver cómo se compila el programa en el lenguaje Go.

Supongo que te gusta

Origin blog.csdn.net/qq_34556414/article/details/123535600
Recomendado
Clasificación