"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go에서 HTML 템플릿의 중첩된 구조체 필드에 어떻게 액세스하나요?

Go에서 HTML 템플릿의 중첩된 구조체 필드에 어떻게 액세스하나요?

2024년 11월 17일에 게시됨
검색:196

How to Access Nested Struct Fields in HTML Templates in Go?

Go에서 HTML 템플릿에 있는 지도 요소의 구조체 필드에 액세스하는 방법

이 문서에서는 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}}

    이 단계를 수행하면 템플릿에서 각 작업의 설명 필드를 성공적으로 검색하고 표시할 수 있습니다.

    릴리스 선언문 이 글은 1729726421에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
    최신 튜토리얼 더>

    부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

    Copyright© 2022 湘ICP备2022001581号-3