Switch と ForEach を使用した Golang テンプレート
このコード デモは、Go でテンプレートを利用して bash スクリプトを生成することに焦点を当てています。このスクリプトでは、依存関係の ForEach 反復、依存関係のタイプの識別、対応するエコー メッセージの出力が必要です。各依存関係のタイプを処理するために switch ステートメントが実装されています。
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) } }
提供されたデータはファイル構造にアンマーシャリングされ、テンプレートを実行できるようになります。この変更されたコードは、
#!/bin/bash echo "type is runner" echo "cwd is /ui" echo "install api" echo "type is runner2" echo "cwd is /ui2" echo "install api2"
以上がswitch と ForEach を含む Go テンプレートを使用して Bash スクリプトを生成し、依存関係を反復処理し、そのタイプに基づいて対応するエコー メッセージを出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。