Plantillas en GoLang

La plantilla en Golang es una característica robusta para crear contenido dinámico o mostrar resultados personalizados al usuario. Golang tiene dos paquetes con plantillas:

  • texto/plantilla
  • html/plantilla

Hay principalmente 3 partes de una plantilla que son las siguientes:

1. Acciones

Son evaluaciones de datos, estructuras de control como bucles o funciones. Las acciones están delimitadas por {{ y }} donde el elemento raíz se muestra usando el operador de punto (.) entre llaves, {{.}}. Estas acciones controlan cómo se verá el resultado final.
Para colocar el valor de un campo del objeto de estructura actual, prefije el nombre del campo con un operador de punto (.) entre llaves como {{.FieldName}} . Los datos que se evalúan en su interior se denominan pipeline .

2. Condiciones

La construcción if-else también se puede usar dentro de una plantilla. Por ejemplo, para ejecutar una plantilla solo cuando la condición es verdadera, podemos usar la siguiente sintaxis:

{{if .condition}} temp_0 {{else if .condition}} temp_1 {{else}} temp_2 {{end}}

Esto ejecutará la primera plantilla, temp_0, si la primera condición es verdadera, si la segunda condición es verdadera, entonces se ejecutará la segunda plantilla, temp_1, de lo contrario, se ejecutará la tercera plantilla, temp_2.

3. Bucles

Las iteraciones también se pueden usar dentro de una plantilla usando la acción de rango . La sintaxis para hacer un bucle dentro de una plantilla es:

{{range .List}} temp_0 {{else}} temp_1 {{end}}

Aquí, List debe ser una array, un mapa o un segmento que, si tiene una longitud de 0, se ejecutará la plantilla temp_1; de lo contrario, itera a través de los elementos de List.

El formato de entrada de una plantilla debe tener un formato codificado en UTF-8. Cualquier otro texto exterior se imprime tal como está en la salida estándar. La variable predefinida os.Stdout se refiere a la salida estándar para imprimir los datos combinados. La función Execute() toma cualquier valor que implemente la interfaz de Writer y aplica una plantilla analizada al objeto de datos especificado.

Ejemplo 1:

// Golang program to illustrate the
// concept of text/templates
package main
  
import (
    "os"
    "fmt"
    "text/template"
)
  
// declaring a struct
type Student struct{
  
    // declaring fields which are
    // exported and accessible 
    // outside of package as they 
    // begin with a capital letter
    Name string
    Marks int64
}
  
// main function
func main() {
  
    // defining an object of struct
    std1 := Student{"Vani", 94}
      
    // "New" creates a new template
    // with name passed as argument
    tmp1 := template.New("Template_1")
  
    // "Parse" parses a string into a template
    tmp1, _ = tmp1.Parse("Hello {{.Name}}, your marks are {{.Marks}}%!")
      
    // standard output to print merged data
    err := tmp1.Execute(os.Stdout, std1)
      
    // if there is no error, 
    // prints the output
        if err != nil {
                fmt.Println(err)
        }
}

Producción:

Hello Vani, your marks are 94%!

La plantilla de paquete «html/template» proporciona la misma interfaz que «text/template», pero en lugar de tener una salida de texto, implementa plantillas basadas en datos para generar una salida HTML . Esta salida HTML es segura contra cualquier inyección de código externo.

Ejemplo 2:

archivo “index.html”:

<!DOCTYPE html>
<html>
<head>
<title>Results</title>
</head>
<body>
<h1>Hello, {{.Name}}, ID number: {{.Id}}</h1>
<p>
  You have scored {{.Marks}}!
<p>
</body>
</html>

Archivo “main.go”:

// Golang program to illustrate the
// concept of html/templates
package main
  
import (
    "html/template"
    "os"
)
  
// declaring struct
type Student struct {
  
    // defining struct fields
    Name string
    Marks int
    Id string
}
  
// main function
func main() {
      
    // defining struct instance
    std1 := Student{"Vani", 94, "20024"}
  
    // Parsing the required html
    // file in same directory
    t, err := template.ParseFiles("index.html")
  
    // standard output to print merged data
    err = t.Execute(os.Stdout, std1)
}

Producción:

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>Hello, Vani, ID number: 20024</h1>
<p>
  You have scored 94!
<p>
</body>
</html>

Publicación traducida automáticamente

Artículo escrito por vanigupta20024 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *