Skip to content

Latest commit

 

History

History
111 lines (86 loc) · 4.11 KB

06.lo-que-el-lenguaje-no-sabe-bibliotecas.md

File metadata and controls

111 lines (86 loc) · 4.11 KB

Lo que el lenguaje no sabe: bibliotecas

Y es que los lenguajes, en su mayoría, no cuentan con demasiadas funciones. Lo justo para dar un paseo por aquí por casa o construir unas más complicadas. Pero... ¿Para qué reinventar la rueda? Imagina que necesitas solucionar un problema mediante utilizando la programación: ¿Podría otra persona haber tenido la misma necesidad y haber resuelto ese problema? En ese caso ¿Estará disponible la solución?

Afortunadamente, el hecho de que Go sea software libre hace que se cree todo un ecosistema alrededor del mismo, con funciones que no están incluidos en el lenguaje, pero que añaden funcionalidad al mismo. Estos módulos generalmente están o en un repositorio, o referenciados en un directorio central de forma que se especifica desde dónde se descargan y qué otras dependencias tienen que cargarse antes de ser instalados. Estos módulos son conocidos como bibliotecas o, en el caso de Go, paquetes.

Un import path es una cadena que identifica a un paquete y corresponde con su ubicación, generalmente, dentro de tu workspace, a donde apunta la variable GOPATH que vimos al principio de este libro. El nombre del paquete, normalmente, tendrá un formato del tipo github.com/user/hello. El primer directorio es el repositorio, el segundo el usuario u organización que lo ha desarrollado y, por último, el nombre del paquete.

Algunos de estos paquetes vienen preinstalados con el lenguaje. Por ejemplo, es muy conocido el paquete fmt, que permite mostrar mensajes por pantalla, conocido especialmente al ser el utilizado en todos los "hola mundo" de Go. Otro paquete, mucho más interesante, es net/http: con este paquete puedes crear aplicaciones web, incluso un servidor de ficheros. Si abres de nuevo gore, podrás importar un paquete escribiendo :import <paquete>. Por ejemplo:

gore> :import net/http
gore> :import fmt

Y ya tendrás acceso a toda la funcionabilidad que contiene.

También puedes instalar paquetes nuevos. Para instalar un paquete, solo tienes que ejecutar go get <nombre de tu paquete>.

¿Cómo escribo mis propios programas? Si te has hecho esta pregunta, puede entonces que te interese

Cómo crear un paquete en Go

Antes de entrar a hablar en mayor profundidad de los paquetes en Go, vamos a echar un ojo a la estructura que tiene el workspace. Contiene tres directorios:

  • src: concentra el código fuente organizado como paquetes.
  • pkg: aquí se encuentran los objetos de los paquetes que se almacenan en el directorio src.
  • bin: aquí se almacenan todos los programas ejecutables.

Tenemos que diferenciar entre dos situaciones algo diferentes:

  • Quieres escribir un programa ejecutable
  • Quieres escribir una biblioteca que sea reutilizable

Vamos a empezar por

Crear un programa ejecutable

En este caso, empezaremos indicando que nuestro programa pertenece al paquete main. Esto quiere decir, que nuestro código es el punto de entrada a nuestra aplicación. Después puedes importar paquetes. Cuando quieres importar alguno, simplemente escribes import al principio de tu programa e indicas qué paquetes quieres:

package main

import (
"net/http"
)

A esto, le seguirán todas las funciones que hayas querido declarar, así como estructuras y variables globales. En algún momento, tendrás que declarar una función main. Es el verdadero punto de entrada del programa: cuando un usuario ejecute tu programa, se llamará a esta función y se ejecutarán todas las instrucciones que haya en él. Por ejemplo, el programa:

package main

import (
	"fmt"
	"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, `<html>
        <body style='background:#000;'></body>
    </html>`)
}

func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":8080", nil)
}

Lanzará un servidor HTTP en el puerto 8080 de tu máquina. Cuando alguien acceda a la dirección http://localhost:8080 desde un navegador, por ejemplo, encontrará una página web en color negro.

Para ejecutar el anterior programa, guarda el código en un archivo que se llame miservidor.go y ejecútalo con go run miservidor.go.