Maison >développement back-end >Golang >Comment puis-je générer un script Bash à l'aide de modèles Go avec switch et ForEach pour parcourir les dépendances et générer les messages d'écho correspondants en fonction de leur type ?

Comment puis-je générer un script Bash à l'aide de modèles Go avec switch et ForEach pour parcourir les dépendances et générer les messages d'écho correspondants en fonction de leur type ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 08:22:02407parcourir

How can I generate a Bash script using Go templates with switch and ForEach to iterate through dependencies and output corresponding echo messages based on their type?

Modèle Golang avec Switch & ForEach

Cette démonstration de code se concentre sur l'utilisation d'un modèle dans Go pour produire un script bash. Le script nécessite une itération ForEach à travers les dépendances, en identifiant leurs types et en générant les messages d'écho correspondants. Une instruction switch est implémentée pour gérer le type de chaque dépendance.

package main

import (
    "log"
    "text/template"
    "gopkg.in/yaml.v2"
    "os"
)

type File struct {
    TypeVersion string `yaml:"_type-version"`
    Dependency  []Dependency
}

type Dependency struct {
    Name    string
    Type    string
    CWD     string
    Install []Install
}

type Install map[string]string

var data = `
_type-version: "1.0.0"
dependency:
  - name: ui
    type: runner
    cwd: /ui
    install:
       - name: api

  - name: ui2
    type: runner2
    cwd: /ui2
    install:
       - name: api2

`

func main() {
    f := File{}

    err := yaml.Unmarshal([]byte(data), &f)
    if err != nil {
        log.Fatalf("error: %v", err)
    }

   const t = `
#!/bin/bash

{{range .Dependency}}
echo "type is {{.Type}}"
echo "cwd is {{.CWD}}"
{{range .Install}}
echo "install {{.name}}"
{{end}}
{{end}}
`

    tt := template.Must(template.New("").Parse(t))
    err = tt.Execute(os.Stdout, f)
    if err != nil {
        log.Println("executing template:", err)
    }
}

Les données fournies sont désorganisées dans une structure de fichier, qui est ensuite prête pour l'exécution du modèle. Ce code modifié génère un script avec :

#!/bin/bash

echo "type is runner"
echo "cwd is /ui"
echo "install api"

echo "type is runner2"
echo "cwd is /ui2"
echo "install api2"

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