Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menjana Skrip Bash Tersuai Menggunakan Templat Go, Pernyataan Kes Tukar dan Data YAML?

Bagaimana untuk Menjana Skrip Bash Tersuai Menggunakan Templat Go, Pernyataan Kes Tukar dan Data YAML?

Barbara Streisand
Barbara Streisandasal
2024-10-29 04:18:29287semak imbas

How to Generate a Customized Bash Script Using Go Templates, Switch-Case Statements, and YAML Data?

Templat Golang dengan Suis & ForEach

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:

  • Kod menggunakan teks/templat untuk memformat rentetan output.
  • Kata kunci julat berulang pada tatasusunan Ketergantungan.
  • Di dalam gelung, blok kes suis digunakan untuk menyesuaikan output berdasarkan Jenis kebergantungan.
  • Pernyataan kes mengendalikan nilai Jenis tertentu dan mencetak arahan yang diingini.
  • Kes lalai mengendalikan jenis yang tidak ditakrifkan secara khusus.

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:

  • Contoh data YAML dikodkan keras dalam pembolehubah data. Dalam senario dunia sebenar, ini boleh dimuatkan daripada fail atau pangkalan data.
  • Pemetaan API (daripada Jenis kepada arahan) boleh dilaksanakan sebagai peta atau fail konfigurasi berasingan untuk fleksibiliti yang dipertingkatkan.
  • Medan cwd dan Pasang dalam struct Dependency tidak digunakan dalam penyelesaian ini, kerana ia tidak diperlukan untuk demo.

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!

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