> 백엔드 개발 > Golang > 스위치 및 ForEach가 포함된 Go 템플릿을 사용하여 Bash 스크립트를 생성하여 종속성을 반복하고 유형에 따라 해당 에코 메시지를 출력하려면 어떻게 해야 합니까?

스위치 및 ForEach가 포함된 Go 템플릿을 사용하여 Bash 스크립트를 생성하여 종속성을 반복하고 유형에 따라 해당 에코 메시지를 출력하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-10-29 08:22:02
원래의
497명이 탐색했습니다.

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 반복, 해당 유형 식별 및 해당 에코 메시지 출력이 필요합니다. 각 종속성의 유형을 처리하기 위해 스위치 문이 구현됩니다.

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"
로그인 후 복사

위 내용은 스위치 및 ForEach가 포함된 Go 템플릿을 사용하여 Bash 스크립트를 생성하여 종속성을 반복하고 유형에 따라 해당 에코 메시지를 출력하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿