템플릿 범위 루프 내에서 URL 매개변수에 액세스
Go 템플릿으로 작업할 때 루프 내에서 데이터에 액세스하는 방법을 이해하는 것이 중요합니다. 다음 코드 및 템플릿을 고려하십시오.
type User struct { Username string Password []byte Email string } func main() { users := []User{ {Username: "Alice", Email: "alice@example.com"}, {Username: "Bob", Email: "bob@example.com"}, } renderer.HTML(w, http.StatusOK, "users/index", map[string]interface{}{ "lang": chi.URLParam(r, "lang"), "users": users, }) }
{{ range .users }} <form action="/{{ .lang }}/users" method="POST"> <input type="text" name="Username" value="{{ .Username }}"> <input type="text" name="Email" value="{{ .Email }}"> </form> {{ end }}
이 시나리오에서는 "lang" 필드가 "User" 구조체의 일부가 아니라는 오류가 발생할 수 있습니다. 이 문제를 해결하기 위해 "점" 개념과 특수 변수 "$"를 활용할 수 있습니다.
점 및 $
이해하기 루프가 호출되면 "점"(.)의 내용은 특수 변수 "$"에 할당됩니다. 이를 통해 범위 블록 내의 루프 외부에서 데이터에 액세스할 수 있습니다. 예를 들어 "lang" 매개변수에 액세스하려면 다음과 같이 "$"를 사용할 수 있습니다.
{{ range .users }} <form action="/{{ $.lang }}/users" method="POST"> <input type="text" name="Username" value="{{ .Username }}"> <input type="text" name="Email" value="{{ .Email }}"> </form> {{ end }}
이 방법을 사용하면 문제가 성공적으로 해결되어 범위 루프 내에서 "lang" 매개변수에 액세스할 수 있습니다. "점"과 "$"의 동작은 Go 템플릿 가이드에 문서화되어 있습니다.
대체 접근 방법
"$"를 사용하여 데이터에 액세스하는 시나리오가 발생하는 경우 중첩 루프로 인해 어려운 경우 임시 변수에 "점"을 할당하거나 "with" 문을 사용하여 데이터 할당을 위한 전용 범위를 만드는 등의 대체 옵션을 고려해보세요.
위 내용은 Go의 템플릿 범위 루프 내에서 URL 매개변수에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!