Accès aux méthodes Go à partir de modèles HTML
Dans Go, les modèles sont un moyen polyvalent de générer du contenu HTML de manière dynamique. Cependant, appeler des méthodes à partir de modèles peut parfois poser un défi.
Problème :
Considérez la structure Go suivante :
type Person struct { Name string } func (p *Person) Label() string { return "This is " + p.Name }
Comment peut-on cette méthode est-elle accessible à partir d'un modèle HTML ? Dans le modèle, vous souhaitez utiliser une syntaxe similaire à :
{{ .Label() }}
Solution :
Pour appeler une méthode depuis un modèle Go, omettez simplement les parenthèses :
{{ .Label }}
Le code Go suivant démontre this :
package main import ( "html/template" "log" "os" ) type Person string func (p Person) Label() string { return "This is " + string(p) } func main() { tmpl, err := template.New("").Parse(`{{.Label}}`) if err != nil { log.Fatalf("Parse: %v", err) } tmpl.Execute(os.Stdout, Person("Bob")) }
Sortie :
This is Bob
La documentation précise que vous pouvez appeler n'importe quelle méthode qui renvoie une valeur ou deux valeurs, à condition que la deuxième valeur soit de type erreur. Dans ce dernier cas, l'erreur est renvoyée si elle est non nulle et l'exécution du modèle est interrompue.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!