Maison >développement back-end >Golang >Comment transmettre plusieurs valeurs entre les modèles Go ?

Comment transmettre plusieurs valeurs entre les modèles Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-04 16:33:10355parcourir

How to Pass Multiple Values Between Go Templates?

Transmission de plusieurs valeurs entre les modèles Go

Lorsque vous travaillez avec des modèles Go, il peut être nécessaire de transmettre plusieurs valeurs entre les modèles. Cependant, l'action {{template}} du package text/template ne prend en charge que la transmission d'une seule valeur de données facultative. Cela soulève la question de savoir comment transférer efficacement plusieurs éléments de données. Une approche consiste à consolider les données en une seule valeur. Go propose deux options : envelopper les données dans une structure ou utiliser une carte.

Encapsuler dans une structure

Une méthode consiste à créer une structure qui encapsule les données que vous souhaitez transférer. Cette structure peut ensuite être transmise au modèle et utilisée avec la notation par points pour accéder aux éléments de données individuels du modèle. Voici un exemple :

type DataWrapper struct {
    Shops      []Destination
    CityName   string
    RegionName string
}

Encapsuler dans une carte

Si l'utilisation d'une structure n'est pas pratique, vous pouvez également envelopper les données dans une simple carte. Les clés de carte représenteront les noms des éléments de données et les valeurs de carte seront les valeurs de données réelles. Voici un exemple :

func Wrap(shops []Destination, cityName, regionName string) map[string]interface{} {
    return map[string]interface{}{
        "Shops":      shops,
        "CityName":   cityName,
        "RegionName": regionName,
    }
}

Intégration avec des fonctions personnalisées

Une fois que vous avez encapsulé vos données dans une structure ou une carte, vous pouvez utiliser une fonction personnalisée pour transmettre ces données au modèle. Les fonctions personnalisées peuvent être enregistrées avec la méthode Template.Funcs(), et vous devez le faire avant d'analyser le texte du modèle. Voici un exemple d'utilisation d'une fonction personnalisée pour transmettre des données :

const src = `
{{define "data"}}
    City: {{.CityName}}, Region: {{.RegionName}}, Shops: {{.Shops}}
{{end}}
{{- range . -}}
        {{$city:=.Name}}
        {{- range .Regions -}}
              {{$region:=.Name}}
              {{- template "data" (Wrap .Shops $city $region) -}}
        {{end}}
{{- end}}`

Conclusion

En structurant vos données en une seule valeur et en utilisant des fonctions personnalisées, vous pouvez transmettre efficacement plusieurs valeurs entre les modèles Go. . Cela vous permet de partager efficacement des structures de données complexes entre différentes parties de vos modèles, améliorant ainsi la flexibilité et la maintenabilité de vos applications Web Go.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn