Ir al contenido

Sintaxis

El texto se imprime tal cual. Una acción es todo lo que está dentro de {{ y }}.

¡Hola {{ .User.Username }}!
{{/* Esto es un comentario, no se imprime */}}

{{- quita los espacios, tabulaciones y saltos de línea antes de la acción, y -}} los que van después.

a {{- "b" -}} c

imprime abc. Sin los guiones, se imprimirían los espacios.

Tipo Ejemplos Notas
Texto "hola", "salto\nde línea", `texto crudo` En "..." puedes escribir \n, \t, \r, \" y \\. El texto entre acentos graves no se cambia
Número 5, -3, 2.5
Booleano true, false
Nil nil Sin valor
Lista cslice 1 2 3 Mira Funciones
Mapa sdict "a" 1 "b" 2 Nombres y valores

Los ID son texto. Un ID de Discord tiene 18 dígitos y un número tan grande pierde los últimos, así que escribe los ID entre comillas: "123456789012345678". Escribir uno como número es un error que se avisa cuando se revisa el código.

En una condición, esto es falso: false, nil, 0, un texto vacío "", una lista vacía y un mapa vacío. Todo lo demás es verdadero.

Valor Se imprime como
Texto El texto
Número 5, 2.5
Booleano true, false
Nil Nada
Lista [1 2 3]
Mapa map[a:1 b:2]

Los datos que el código puede leer se escriben con un punto: .User.Username. . solo es el valor actual, y $ siempre es todo el conjunto de datos, incluso dentro de un bucle. Mira Datos.

Leer un nombre que no existe da nil. Leer dentro de nil (.Nope.Deep cuando .Nope es nil) es un error.

{{ $count := 0 }} {{/* crear */}}
{{ $count = add $count 1 }} {{/* cambiar */}}
{{ $count }}
  • := crea una variable en el bloque actual. = cambia una que ya existe, desde cualquier bloque dentro de ese.
  • Una variable creada dentro de if, range o with solo existe hasta su end.
  • Usar una variable que no fue creada es un error.

Una función se escribe primero y sus argumentos van después, separados por espacios. Los paréntesis llaman a una función dentro de otra.

{{ add 1 2 }} {{/* 3 */}}
{{ sub 10 (mult 2 3) }} {{/* 4 */}}
{{ printf "%s tiene %d" "Liam" 5 }}

Una función no se puede usar como valor sin llamarla.

| entrega el resultado de su izquierda a la función de su derecha como su último argumento, igual que en las plantillas de Go.

{{ " hola " | trim | upper }} {{/* HOLA */}}
{{ 3 | add 4 | mult 2 }} {{/* mult 2 (add 4 3) = 14 */}}

Como el valor va al final, ten cuidado con las funciones que reciben primero el valor principal, como split y join: {{ join (split "a-b" "-") "+" }} es más claro que una tubería.

{{ if eq .User.Username "Liam" }}
¡Hola Liam!
{{ else if gt (len .Args) 2 }}
Muchos argumentos.
{{ else }}
Hola.
{{ end }}

else if y else son opcionales. La condición es cualquier valor, con las reglas de verdadero y falso de arriba.

with ejecuta su bloque solo si el valor es verdadero, y dentro de él . es ese valor:

{{ with .Member }}{{ .Nick }}{{ else }}Sin miembro{{ end }}
{{ range $index, $value := .Args }}{{ $index }}: {{ $value }}
{{ end }}
Forma Qué hace
range $i, $v := lista Índice y valor
range $v := lista Solo el valor
range lista Solo el valor, como .
range $k, $v := mapa Clave y valor, en orden alfabético de las claves
  • {{ break }} sale del bucle y {{ continue }} pasa a la siguiente vuelta. Solo funcionan dentro de un range.
  • {{ else }} en un range se ejecuta cuando la lista está vacía.
  • {{ return }} detiene el código de inmediato. Lo que se imprimió antes se queda.
  • Para repetir algo un número de veces: {{ range seq 0 5 }}...{{ end }}.

and y or siempre miran todos sus argumentos antes de decidir, no se detienen en el primero.