Templat Golang dengan Suis & ForEach
Demonstrasi kod ini memfokuskan pada penggunaan templat dalam Go untuk menghasilkan skrip bash. Skrip memerlukan lelaran ForEach melalui kebergantungan, mengenal pasti jenisnya dan mengeluarkan mesej gema yang sepadan. Pernyataan suis dilaksanakan untuk mengendalikan jenis setiap kebergantungan.
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) } }
Data yang disediakan adalah Unmarshalled ke dalam struktur Fail, yang kemudiannya sedia untuk pelaksanaan templat. Kod yang diubah suai ini menjana skrip dengan:
#!/bin/bash echo "type is runner" echo "cwd is /ui" echo "install api" echo "type is runner2" echo "cwd is /ui2" echo "install api2"
Atas ialah kandungan terperinci Bagaimanakah saya boleh menjana skrip Bash menggunakan templat Go dengan suis dan ForEach untuk beralih melalui kebergantungan dan mengeluarkan mesej gema yang sepadan berdasarkan jenisnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!