>백엔드 개발 >Golang >Go 템플릿에 여러 데이터 객체를 어떻게 전달할 수 있나요?

Go 템플릿에 여러 데이터 객체를 어떻게 전달할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-12-19 21:22:10666검색

How Can I Pass Multiple Data Objects to Go Templates?

Go 템플릿에 여러 데이터 전달

Go에서 템플릿 실행을 사용하면 단일 값을 전달할 수 있지만 이 값은 복합 유형일 수 있습니다. 여러 구성 요소가 포함되어 있습니다. 이는 템플릿의 다양한 데이터 객체를 전달하고 액세스하기 위한 여러 옵션을 제공합니다.

구조체를 사용한 복합 값:

원하는 데이터를 캡슐화하는 사용자 정의 구조체 데이터 유형을 생성합니다.

type Data struct {
    Results []User
    Other   []int
}

데이터를 할당하고 실행 템플릿:

data := &Data{results, []int{1, 2, 3}}
if err := GetTemplate("list").Execute(w, data); err != nil {
    // Handle error
}

템플릿에서 MongoDB 결과에 {{.Results}}로, 정수 배열에 {{.Other}}로 액세스합니다.

다음을 사용하여 합성 값 지도:

또는 다음을 포함하는 지도를 만듭니다. data:

m := map[string]interface{}{
    "Results": results,
    "Other":   []int{1, 2, 3},
}

맵을 템플릿에 전달하고 점 표기법을 사용하여 데이터에 액세스합니다. 결과는 {{.Results}}, 정수 배열은 {{.Other}}입니다.

슬라이스를 사용한 복합 값:

가독성이 떨어지는 접근 방식은 다음을 포함하는 슬라이스를 사용하는 것입니다. data:

s := []interface{}{
    results,
    []int{1, 2, 3},
}

구성 요소에 액세스하려면 템플릿 데이터를 색인화하세요. {{index . 0}} 결과 및 {{index . 1}} 정수 배열의 경우.

추가 참고 사항:

템플릿에서 액세스할 수 있으려면 데이터 유형을 내보내야 한다는 점을 기억하세요.

가독성과 유지 관리성을 향상하려면 구조체나 맵을 사용하는 것이 좋습니다.

다른 접근 방식도 있지만 실용성이 떨어집니다. 이 특정 시나리오입니다.

위 내용은 Go 템플릿에 여러 데이터 객체를 어떻게 전달할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.