2010-10-10 20 views
1

dire que j'ai une structure de données comme ceci:Accès indices de tableau spécifiques en utilisant la bibliothèque de modèles go

type Foo struct { 
    Bar []struct { 
    FooBar string 
    } 
} 

Et je remplir telle que Bar dispose de 3 éléments. Maintenant, en utilisant la bibliothèque template, comment puis-je accéder au FooBar du 3e élément dans cette tranche? Je l'ai essayé ce qui suit sans succès:

{Foo.Bar[2].FooBar} 
{Foo.Bar.2.FooBar} 

Maintenant, je sais que je peux utiliser {.repeated section Foo.Bar} {FooBar} {.end}, mais qui me donne la valeur de foobar pour chaque élément, plutôt qu'un simple spécifique. Je ai googlé et demandé sur irc en vain ...

Répondre

1

Je suis assez certain que ce n'est tout simplement pas possible. Il existe peut-être un moyen de restructurer vos données afin qu'elles soient toutes nommées. Ou simplement écrire plus de logique dans votre application actuelle. L'indexation de tableau est quelque peu au-delà de la portée du paquet de modèle je pense.

+0

C'est ce que je l'ai fait, mais il était beaucoup plus de travail que d'utiliser simplement les index dans le fichier modèle. Eh bien ... – crazy2be

3

Utilisation de la nouvelle text/template ou html/template:

package main 

import (
    "fmt" 
    "text/template" // or html/template 
    "os" 
) 

func main() { 
    tmpl, err := template.New("name").Parse("{{index . 0}}") 
    if err != nil { 
     fmt.Println(err) 
     return 
    } 
    tmpl.Execute(os.Stdout, []string{"yup, that's me", "not that!"}) 
} 
+1

Notez que j'ai posé cette question avant que la nouvelle bibliothèque de modèles existe, donc ce n'était pas possible alors. Néanmoins, il est bon d'ajouter maintenant pour la référence des personnes du futur. – crazy2be

+0

@ crazy2be Je le savais, et je suis d'accord. –