Rumah > pembangunan bahagian belakang > Golang > 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?

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?

Susan Sarandon
Lepaskan: 2024-10-29 08:22:02
asal
405 orang telah melayarinya

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?

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)
    }
}
Salin selepas log masuk

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"
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan