Todos los programas en Go se organizan en paquetes. Los paquetes nos permiten generar pequeñas piezas de código que resuelven un problema particular y son fácilmente utilizados por otros paquetes.
Nuestros primeros programas con pocas líneas se disponen en un paquete llamado main que lo indicamos al comienzo del archivo:
package main
El paquete main es el principal de todo programa y debe tener declarada la función main donde se inicia la ejecución.
Cuando instalamos Go tenemos a nuestra disposición la biblioteca estándar de paquete que nos facilitan el trabajo con el formato de salidas por pantalla y entrada por teclado (paquete fmt), administración de string, conexiones http etc.
Cuando queremos utilizar la funcionalidad de un paquete de la biblioteca estándar solo debemos importarla en la parte superior de nuestro archivo:
package main import "fmt" func main() { fmt.Print("Hola Mundo") }
Para acceder a las funciones que provee el paquete fmt debemos anteceder dicho nombre a las funciones, tipos, constantes etc.:
fmt.Print("Hola Mundo")
Veremos un poco más adelante que en el lenguaje Go solo podemos acceder a las funciones de un paquete que comienzan con un caracter en mayúsculas.
Cuando se instala el lenguaje Go en nuestro equipo podemos ver una subcarpeta donde tenemos todos los paquetes de la biblioteca estándar:
Como vemos el nombre del paquete coincide con el nombre de una carpeta, por ejemplo vemos la carpeta "fmt" que en su interior hay una serie de archivos que pertenecen a dicho paquete, si abrimos el código de dichos archivos veremos que en la primer línea indica el nombre del paquete:
Los 8 archivos de la carpeta "fmt" deben especificar en la primer línea que pertenecen al paquete "fmt".
Un directorio puede tener solo un paquete, si podemos tener subdirectorios en dicho directorio con otros paquetes como sucede por ejemplo con:
Cuando importamos un paquete debemos indicar el camino completo de directorios, por ejemplo "fmt" depende directamente de la carpeta "src" por eso no indicamos nada, pero si necesitamos importar el paquete http debemos indicar la sintaxis:
import "net/http"
Cuando importamos varios paquetes (hasta ahora nuestros programas solo importaron el paquete "fmt") podemos hacerlo de dos forma. Mediante un import previo a cada paquete:
import "fmt" import "net/http"
O con un solo import:
import ( "fmt" "net/http" )
Esta última forma es la que se utiliza en forma más extendida. Podemos comprobarlo si vemos el código fuente de los archivos de la biblioteca estándar de Go.
Por ahora veremos funcionalidades de paquetes de la biblioteca estándar de Go, más adelante veremos como crear paquetes propios para reutilizar en varios programas y de utilizar paquetes desarrollados por otros programadores.
En algunas situaciones puede haber colisión de nombres de paquetes, en dichos casos podemos crear un alias para un paquete:
package main import f "fmt" func main() { f.Println("Hola mundo") }
Podemos dar cualquier nombre al alias que creamos para el paquete "fmt".