Go 텍스트 템플릿의 마지막 요소에 대한 특수 사례 처리
Go의 텍스트 템플릿 시스템에서 "(p1, p2, p3)"을 배열에서 추출하는 것은 어려울 수 있습니다. 특히 마지막에 쉼표를 올바르게 배치할 경우 더욱 그렇습니다. element.
비작업 시도
후행 쉼표를 제거하지 못한 한 가지 시도는 다음과 같습니다.
import ( "text/template" "os" ) func main() { ip := []string{"p1", "p2", "p3"} temp := template.New("myTemplate") _, _ = temp.Parse(paramList) temp.Execute(os.Stdout, ip) } const paramList = "{{ $i := . }}({{ range $i }}{{ . }}, {{end}})"
해결책
이 퍼즐은 다음과 같은 경우 템플릿의 특수 구문을 활용하여 해결할 수 있습니다. 진술. Go if 문과 달리 템플릿 if는 0 값을 테스트할 수 있습니다. 이를 통해 다음 트릭을 사용할 수 있습니다.
import ( "text/template" "os" ) func main() { ip := []string{"p1", "p2", "p3"} temp := template.New("myTemplate") _, _ = temp.Parse(paramList) temp.Execute(os.Stdout, ip) } const paramList = "{{ $i := . }}({{ range $i }}{{ if $index }},{{end}}{{ . }}{{end}})"
마법은 라인에 있습니다.
{{ if $index }},{{end}}
$index 변수는 범위 반복 중에 자동으로 할당되며 다음을 테스트하는 데 사용됩니다. 마지막 요소. 인덱스가 0이 아닌 경우(마지막 요소가 아님을 의미) 쉼표가 삽입됩니다. 이렇게 하면 마지막 요소에 후행 쉼표가 없어집니다.
위 내용은 Go 텍스트 템플릿 문자열 연결에서 후행 쉼표를 피하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!