Crea un servidor HTTP básico usando Go, ideal para comenzar a trabajar con servicios web simples.
 Crear un servidor HTTP en Go es muy simple simple. No es necesario instalar paquetes externos, ni configurar entornos complicados. Solo necesitamos el paquete net/http que ya viene en la biblioteca estándar de Go.
Esto lo hace una buena opción si queremos servir contenido estático, crear una API, o simplemente aprender cómo funcionan los servidores web desde dentro.
Veamos cómo lo haríamos.
Con solo unas líneas podemos hacer que nuestro navegador responda a una URL local. Este es el código más simple que podemos escribir para lograrlo:
package main
import (  "fmt"  "net/http")
func main() {  http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {    fmt.Fprintf(w, "Hola desde Go")  })
  err := http.ListenAndServe(":8080", nil)  if err != nil {    panic(err)  }}Para iniciar el servidor desde la línea de comandos:
go run server.goEsto crea un servidor que escucha en el puerto 8080. Cada vez que alguien accede a la raíz (/), respondemos con el mensaje "Hola desde Go".
Si vamos a http://localhost:8080/ desde el navegador, veremos la respuesta directamente.
Lo que hicimos fue:
http.HandleFunc para registrar una función que responde a todas las solicitudes que lleguen a /.http.ResponseWriter y *http.Request. El primero nos permite escribir la respuesta; el segundo contiene los detalles de la solicitud.http.ListenAndServe, que pone en marcha el servidor.Podemos agregar más rutas simplemente repitiendo http.HandleFunc con distintas paths:
http.HandleFunc("/saludo", func(w http.ResponseWriter, r *http.Request) {  fmt.Fprintf(w, "Hola, esta es la ruta /saludo")})Esto ya nos permite construir una pequeña API o servir diferentes páginas.
Si queremos servir HTML, CSS o imágenes, también es fácil:
fs := http.FileServer(http.Dir("./public"))http.Handle("/static/", http.StripPrefix("/static/", fs))Esto sirve los archivos que tengamos en la carpeta ./public bajo la URL /static/.
Por ejemplo, si guardamos logo.png en ./public, podemos accederlo desde http://localhost:8080/static/logo.png.
Podemos leer información de la URL usando el objeto *http.Request. Por ejemplo:
http.HandleFunc("/saludo", func(w http.ResponseWriter, r *http.Request) {  nombre := r.URL.Query().Get("nombre")  if nombre == "" {    nombre = "desconocido"  }  fmt.Fprintf(w, "Hola, %s", nombre)})Acceder a http://localhost:8080/saludo?nombre=Michael devolverá "Hola, Michael".
gorilla/mux o chi, que agregan routing más detallado.Crear un servidor HTTP en Go es rápido y fácil. Con solo unas pocas líneas podemos levantar un servicio funcional que responde a rutas específicas, sirve archivos y trabaja con parámetros de URL. Esto nos permite construir pequeñas herramientas, prototipos o aprender sobre HTTP sin distracciones.
Si bien hay muchas cosas más que podríamos agregar (headers, métodos específicos como POST, middlewares, etc.), lo básico ya está sobre la mesa. A partir de aquí, podemos ir sumando complejidad según lo vayamos necesitando.