Masalah: Bina skrip bash daripada program Golang yang berulang ke atas senarai kebergantungan, semak mereka jenis dan mencetak perintah tersuai berdasarkan jenis tersebut menggunakan penyataan kes suis.
Jawapan:
Kod Golang dikemas kini berikut mencapai kelakuan yang diingini:
<code class="go">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 } 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}}" {{switch .Type}} case "runner1": echo "Submitting api1" case "runner2": echo "Submitting api2" default: echo "Unknown type" {{end}} {{end}} ` tt := template.Must(template.New("").Parse(t)) err = tt.Execute(os.Stdout, f) if err != nil { log.Println("executing template:", err) } }</code>
Penjelasan:
Keputusan:
Contoh skrip bash yang dihasilkan oleh kod ini ialah:
<code class="bash">#!/bin/bash echo "type is runner" Submitting api1 echo "type is runner2" Submitting api2</code>
Pertimbangan Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Menjana Skrip Bash Tersuai Menggunakan Templat Go, Pernyataan Kes Tukar dan Data YAML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!