이 문서에서는 html/ Go의 템플릿 패키지.
다음 작업 구조체를 고려하세요.
<code class="go">type Task struct { Cmd string Args []string Desc string }</code>
또한 맵은 작업 구조체를 값으로, 문자열을 키로 사용하여 초기화됩니다.
<code class="go">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", }, }</code>
이제 문제를 살펴보겠습니다. HTML 페이지를 구문 분석하는 데 템플릿이 사용됩니다.
<code class="go">func listHandle(w http.ResponseWriter, r *http.Request){ t, _ := template.ParseFiles("index.tmpl") t.Execute(w, taskMap) }</code>
다음 코드 조각은 index.tmpl 템플릿을 나타냅니다.
<code class="html"><html> {{range $key, $value := .}} <li>Task Name: {{$key}}</li> <li>Task Value: {{$value}}</li> <li>Task description: {{$value.Desc}}</li> {{end}} </html></code>
이 접근 방식은 맵의 키와 값을 성공적으로 출력합니다. 하지만 예를 들어 {{$value.Desc}}를 사용하여 템플릿 내의 작업 필드에 액세스하려고 하면 오류가 발생합니다.
해결책은 템플릿 내에서 액세스하려는 필드를 내보내는 것입니다. 이는 필드 이름의 첫 글자를 대문자로 시작하면 됩니다.
<code class="go">type Task struct { Cmd string Args []string Desc string }</code>
따라서 템플릿 내의 필드 이름에 대한 참조도 대문자로 시작해야 합니다.
<code class="html"><html> {{range $key, $value := .}} <li>Task Name: {{$key}}</li> <li>Task Value: {{$value}}</li> <li>Task description: {{$value.Desc}}</li> {{end}} </html></code>
다음 단계를 따르세요. , 템플릿에서 각 작업의 설명 필드를 성공적으로 검색하고 표시할 수 있습니다.
위 내용은 Go에서 HTML 템플릿의 중첩된 구조체 필드에 어떻게 액세스하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!