Golang Template with Switch & ForEach
This code demonstration focuses on utilizing a template in Go to produce a bash script. The script requires ForEach iteration through dependencies, identifying their types, and outputting corresponding echo messages. A switch statement is implemented to handle the type of each dependency.
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) } }
The provided data is Unmarshalled into a File structure, which is then ready for template execution. This modified code generates a script with:
#!/bin/bash echo "type is runner" echo "cwd is /ui" echo "install api" echo "type is runner2" echo "cwd is /ui2" echo "install api2"
The above is the detailed content of 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?. For more information, please follow other related articles on the PHP Chinese website!