/

Apunte Ejemplo Template Golang

Created 2020-03-09 Modifyed 2020-03-09
213 Words

Ejemplo simple de utilización de plantillas en go

main.go

package main

import (
	"encoding/base64"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
	"os"
	"strings"
	"text/template"
)

type Doc struct {
	Descripcion []string `json:"descripcion"`
	Fecha       []string `json:"fecha"`
	ID          string   `json:"id"`
	Titulo      []string `json:"titulo"`
	URL         []string `json:"url"`
	// Contenido   []string `json:"contenido"`
}

type MiResponse struct {
	Response Docs `json:"response"`
}

type Docs struct {
	Docs []Doc `json:"docs"`
}

func main() {
	resp, err := http.Get("https://searchengine.athosnetwork.es?rows=9999&q=docker")
	if err != nil {
		fmt.Println("err", err)
	}

	body, err2 := ioutil.ReadAll(resp.Body)
	if err2 != nil {
		fmt.Println("err2", err2)
	}

	final := strings.ReplaceAll(string(body), "\"", "")
	bytes, _ := base64.StdEncoding.DecodeString(final)

	resultado := MiResponse{}
	json.Unmarshal(bytes, &resultado)

	tmpl, err := template.ParseFiles("./template.gogo")
	if err != nil {
		panic(err)
	}

	err = tmpl.Execute(os.Stdout, resultado.Response.Docs)
	if err != nil {
		panic(err)
	}
}

template.gogo

{{range $item := . -}}
Nombre de archivo: {{index $item.Titulo 0}}
Url: {{index $item.URL 0}}

{{ end }}

Resultado

Nombre de archivo: como-crear-un-contenedor-con-docker.md
Url: https://athosnetwork.es/posts/como-crear-un-contenedor-con-docker/

Nombre de archivo: instalar-ultima-version-docker-compose.md
Url: https://athosnetwork.es/posts/instalar-ultima-version-docker-compose/

Nombre de archivo: docker-y-runit.md
Url: https://athosnetwork.es/posts/docker-y-runit/

Nombre de archivo: montar-gitlab-self-hosted-con-linux-containers-lxc.md
Url: https://athosnetwork.es/posts/montar-gitlab-self-hosted-con-linux-containers-lxc/

Nombre de archivo: plantilla-docker-compose-wordpress-mysql.md
Url: https://athosnetwork.es/posts/plantilla-docker-compose-wordpress-mysql/

Nombre de archivo: ssh-tunneling.md
Url: https://athosnetwork.es/posts/ssh-tunneling/

Nombre de archivo: monitorizar-servidores-y-servicios.md
Url: https://athosnetwork.es/posts/monitorizar-servidores-y-servicios/

Nombre de archivo: mover-contenedor-lxc-de-un-servidor-a-otro.md
Url: https://athosnetwork.es/posts/mover-contenedor-lxc-de-un-servidor-a-otro/

Nombre de archivo: imagenes-alpine-en-docker.md
Url: https://athosnetwork.es/posts/imagenes-alpine-en-docker/