Page cover

🧠Packages

Packages vs modules

Un paquete en Go es una colección de archivos Go en un mismo directorio, que se utilizan para proporcionar una funcionalidad específica y reutilizable en una aplicación Go.

Por otro lado, un módulo en Go es una colección de paquetes Go que se utilizan juntos como una unidad lógica. Los módulos permiten especificar y gestionar las dependencias de una aplicación Go de forma más precisa y confiable. Cada módulo tiene su propio archivo go.mod que describe las dependencias y la versión de cada paquete utilizado.

Por otro lado, un módulo en Go es una colección de paquetes Go en un arbol de directorio con un fichero go.mod en el directorio principal.

Packages →

Como se ha dicho, un paquete de Go es una colección de archivos en un mismo directorio. La primera línea de un archivo go se declara la pertenencia a un paquete con la sintaxis:

package <package name>

Por convención el nombre del directorio y del paquete deben ser el mismo.

¿Que es FMT?

El paquete fmt (abreviatura de format) es parte de la biblioteca estándar de Go y proporciona funciones para formatear e imprimir texto a la consola, así como para escanear (input). Las funciones más usadas en fmt incluyen:

  • fmt.Println(): Imprime texto en la consola seguido de un salto de línea.

  • fmt.Printf(): Imprime texto formateado, similar a printf en C.

  • fmt.Scan(): Lee entradas del usuario.

Toda la documentacion de los diversos paquetes estandares de go la puedo encontrar en:

Por ejemplo creamos la siguiente estructura de directorios:

mkdir webapp
cd webapp
mkdir models

Y creamos dos ficheros en el directorio models:

  • user.go

package models 

import (
"fmt"
)

type User Struct {
    Name string 
    Age int
}
  • chatroom.go

package models 

import (
"fmt"
)

type ChatRoom struct {
    Name string 
    Users []User
}

Ambos ficheros pertenecen al mismo package: models. Otro detalle importante, es que las funciones/variables etc declaradas en un mismo paquete son visibles para todos los archivos go por defecto, no hace falta hacer import.

Como se puede observar la struct chatroom utiliza la struct User a pesar de que está definida en otro fichero.

Main package

El nombre de paquete main está reservado para el punto de entrada de la aplicación y debe contener la función main que es la función de entrada de la aplicación

Last updated