Go 템플릿에 내용을 추가하지만 템플릿의 특정 섹션 내에 내용을 추가하는 데 관심이 있습니다.특정 섹션 내의 Go 템플릿에 내용 추가
예 서식 :
type Client struct {
Opts *ClientOpts
Schemas *Schemas
Types map[string]Schema
Container *{{.schema.Id}}Client
}
실제 출력 :
템플릿 I 템플릿을 실행에 새로운 컨텐츠를 추가하려고 할 때마다 형성되는 구조를 가지고 있기 때문에, 이전에 실행 된 템플릿 콘텐츠에 새로운 컨텐츠를 추가type Client struct {
Opts *ClientOpts
Schemas *Schemas
Types map[string]Schema
Container *abcClient
}
type Client struct {
Opts *ClientOpts
Schemas *Schemas
Types map[string]Schema
Container *xyzClient
}
}
원하는 출력 :
type Client struct {
Opts *ClientOpts
Schemas *Schemas
Types map[string]Schema
Container *abcClient
Container *xyzClient
}
나의 현재 이동 코드는 다음과 같습니다 : 내가 생각할 수있는
func appendToFile(filename string, template *template.Template, schema client.Schema) error {
output, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0600)
if err != nil {
panic(err)
}
defer output.Close()
data := map[string]interface{}{
"schema": schema,
}
err = template.Execute(output, data)
return err
}
하나의 솔루션은 이전에 추가 컨텐츠에 대한 모든 시간을 추구하고 거기에 새로운 콘텐츠를 작성하는 것입니다. 그러나 나는 Go에서 그렇게하는 방법을 모르겠습니다. 누군가가 저에게 코드 스 니펫을 제공하거나 더 나은 전략을 제안 할 수 있습니까?
Go와 함께 제공되는 parser/ast 패키지를 보시지 않겠습니까? 당신은 노드를 생성하고 그 결과를 당신에게 뱉어 낼 수 있습니다. –
이 질문은 잘못된 것 같습니다. 정의에 따라 추가는 버퍼 끝에 내용을 추가하는 것을 의미합니다. 그 대신에, 템플릿 내에 추가 컨텐츠를 추가 할 수 있기를 원합니다. 대신에'client.Schema' 슬라이스에 범위를 두지 않으시겠습니까? – djd