이 문서에서는 html/ Go의 템플릿 패키지.
다음 작업 구조를 고려하세요.
type Task struct {
Cmd string
Args []string
Desc string
}
또한 맵은 작업 구조체를 값으로, 문자열을 키로 사용하여 초기화됩니다.
var taskMap = map[string]Task{
"find": Task{
Cmd: "find",
Args: []string{"/tmp/"},
Desc: "find files in /tmp dir",
},
"grep": Task{
Cmd: "grep",
Args:[]string{"foo","/tmp/*", "-R"},
Desc: "grep files match having foo",
},
}
이제 당면한 문제를 살펴보겠습니다. HTML 페이지를 구문 분석하는 데 템플릿이 사용됩니다.
func listHandle(w http.ResponseWriter, r *http.Request){
t, _ := template.ParseFiles("index.tmpl")
t.Execute(w, taskMap)
}
다음 코드 조각은 index.tmpl 템플릿을 나타냅니다.
{{range $key, $value := .}}
Task Name: {{$key}}
Task Value: {{$value}}
Task description: {{$value.Desc}}
{{end}}
이 접근 방식은 맵의 키와 값을 성공적으로 출력하지만, 예를 들어 {{$value.Desc}}를 사용하여 템플릿 내의 작업 필드에 액세스하려고 시도하면 오류가 발생합니다.
해결책은 템플릿 내에서 액세스하려는 필드를 내보내는 것입니다. 이는 필드 이름의 첫 글자를 대문자로 사용하여 달성할 수 있습니다:
type Task struct {
Cmd string
Args []string
Desc string
}
따라서 템플릿 내의 필드 이름에 대한 참조도 대문자로 사용해야 합니다.
{{range $key, $value := .}}
Task Name: {{$key}}
Task Value: {{$value}}
Task description: {{$value.Desc}}
{{end}}
이 단계를 수행하면 템플릿에서 각 작업의 설명 필드를 성공적으로 검색하고 표시할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3