Sintaxis
Texto y acciones
Sección titulada «Texto y acciones»El texto se imprime tal cual. Una acción es todo lo que está dentro de {{ y }}.
¡Hola {{ .User.Username }}!Comentarios
Sección titulada «Comentarios»{{/* Esto es un comentario, no se imprime */}}Quitar espacios en blanco
Sección titulada «Quitar espacios en blanco»{{- quita los espacios, tabulaciones y saltos de línea antes de la acción, y -}} los que van después.
a {{- "b" -}} cimprime abc. Sin los guiones, se imprimirían los espacios.
Valores
Sección titulada «Valores»| 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.
Qué es verdadero y qué es falso
Sección titulada «Qué es verdadero y qué es falso»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.
Cómo se imprimen los valores
Sección titulada «Cómo se imprimen los valores»| 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.
Variables
Sección titulada «Variables»{{ $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,rangeowithsolo existe hasta suend. - Usar una variable que no fue creada es un error.
Funciones
Sección titulada «Funciones»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.
Tuberías
Sección titulada «Tuberías»| 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.
Condiciones
Sección titulada «Condiciones»{{ 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 unrange.{{ else }}en unrangese 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 }}.
Bueno saber
Sección titulada «Bueno saber»and y or siempre miran todos sus argumentos antes de decidir, no se detienen en el primero.
