ホームページ > バックエンド開発 > Golang > switch と ForEach を含む Go テンプレートを使用して Bash スクリプトを生成し、依存関係を反復処理し、そのタイプに基づいて対応するエコー メッセージを出力するにはどうすればよいですか?

switch と ForEach を含む Go テンプレートを使用して Bash スクリプトを生成し、依存関係を反復処理し、そのタイプに基づいて対応するエコー メッセージを出力するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-29 08:22:02
オリジナル
405 人が閲覧しました

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?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート