> 백엔드 개발 > Golang > Switch 및 ForEach와 함께 Go 템플릿을 사용하여 종속성 유형별 명령으로 Bash 스크립트를 생성하는 방법은 무엇입니까?

Switch 및 ForEach와 함께 Go 템플릿을 사용하여 종속성 유형별 명령으로 Bash 스크립트를 생성하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-10-29 09:50:02
원래의
326명이 탐색했습니다.

How to Use Go Template with Switch and ForEach to Generate Bash Scripts with Dependency Type Specific Commands?

Switch 및 ForEach가 포함된 Golang 템플릿

배경:

작업은 switchForEach 구문을 모두 통합하는 Go 프로그램의 bash.sh 파일입니다. 생성된 스크립트는 종속성 목록을 반복하여 해당 유형에 액세스하고 해당 유형을 사용하여 특정 메시지를 인쇄해야 합니다.

문제:

YAML 마샬링 및 템플릿 구문 분석으로 인해 잘못된 기능이 발생했습니다. 템플릿에서 종속성 유형이 올바르게 사용되지 않았기 때문에 문제가 발생했습니다.

해결책:

문제를 해결하기 위해 종속성 구조가 Install 유형별로 실행할 명령을 나타내는 필드입니다. 그런 다음 Dependency 배열을 반복하고 rangeswitch 구문을 사용하여 유형에 따라 명령을 인쇄하는 템플릿이 생성되었습니다.

다음 코드 조각은 수정된 접근 방식을 보여줍니다.

<code class="go">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 map[string]string
}

var data = `
_type-version: "1.0.0"
dependency:
  - name: ui
    type: runner
    cwd: /ui
    install:
       api: echo api1

  - name: ui2
    type: runner2
    cwd: /ui2
    install:
       api: echo api2

`

func main() {
    f := File{}

    err := yaml.Unmarshal([]byte(data), &amp;f)
    if err != nil {
        log.Fatalf("error: %v", err)
    }

   const t = `
#!/bin/bash

{{range .Dependency}}
echo "type is {{.Type}}"
echo "cwd is {{.CWD}}"
{{range $installName, $installCmd := .Install}}
echo "install {{$installName}} ({{$installCmd}})"
{{end}}
{{end}}
`

    tt := template.Must(template.New("").Parse(t))
    err = tt.Execute(os.Stdout, f)
    if err != nil {
        log.Println("executing template:", err)
    }
}</code>
로그인 후 복사

출력:

업데이트된 코드는 예상되는 스크립트를 생성합니다.

<code class="sh">#!/bin/bash

echo "type is runner"
echo "cwd is /ui"
echo "install api (echo api1)"
echo "type is runner2"
echo "cwd is /ui2"
echo "install api (echo api2)"</code>
로그인 후 복사

요약 , 솔루션은 템플릿을 올바르게 사용하여 종속성 데이터에 액세스하고 switchForEach를 사용하여 유형에 따라 적절한 명령을 생성하는 것입니다.

위 내용은 Switch 및 ForEach와 함께 Go 템플릿을 사용하여 종속성 유형별 명령으로 Bash 스크립트를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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