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
Susan Sarandonasal
2024-10-29 08:22:02471semak imbas

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)
    }
}

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!

Kenyataan:
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