목록이 비어 있지 않으면 Python 스 니펫은 마지막 항목 다음에 세미콜론을 인쇄합니다. 범위에서 범위를 둘러싸고 if를 사용하여 슬라이스에 적어도 하나의 요소가 있는지 확인하고 인쇄하여 동일한 결과를 얻을 수 있습니다. 루프 바깥 쪽.
{{if $hosts}}{{range $host := $hosts}}
{{$host}}
{{ end }} ;{{end}}
마지막 스 니펫은 마지막 항목의 끝에 추가하기 때문에 작동합니다. 좀 더 일반적인 솔루션은 사용자 정의 템플릿 기능이 필요합니다. 여기에 예제 기능입니다 :
func last(v interface{}, i int) (bool, error) {
rv := reflect.ValueOf(v)
if rv.Kind() != reflect.Slice {
return false, errors.New("not a slice")
}
return rv.Len()-1 == i, nil
}
여기에 템플릿을 사용하는 방법은 다음과 같습니다
{{range $i, $host := $hosts }}
{{$host}}{{if last $hosts $i}} ;{{end}}
{{ end }}
내가 놀이터에 a working example of the custom function을 기록했다.