template.go
func (t *Template) ExecuteFunc(w io.Writer, f TagFunc) (int64, error) {
	var nn int64

	n := len(t.texts) - 1
	if n == -1 {
		ni, err := w.Write(unsafeString2Bytes(t.template))
		return int64(ni), err
	}

	for i := 0; i < n; i++ {
		ni, err := w.Write(t.texts[i])
		nn += int64(ni)
		if err != nil {
			return nn, err
		}

		ni, err = f(w, t.tags[i])
		nn += int64(ni)
		if err != nil {
			return nn, err
		}
	}
	ni, err := w.Write(t.texts[n])
	nn += int64(ni)
	return nn, err
}
func (t *Template) ExecuteFunc(w io.Writer, f TagFunc) (int64, error) {
	var nn int64

	n := len(t.texts) - 1
	if n == -1 {
		ni, err := w.Write(unsafeString2Bytes(t.template))
		return int64(ni), err
	}

	for i := 0; i < n; i++ {
		ni, err := w.Write(t.texts[i])
		nn += int64(ni)
		if err != nil {
			return nn, err
		}

		ni, err = f(w, t.tags[i])
		nn += int64(ni)
		if err != nil {
			return nn, err
		}
	}
	ni, err := w.Write(t.texts[n])
	nn += int64(ni)
	return nn, err
}
func ( t * Template ) ExecuteFunc ( w io . Writer , f TagFunc ) ( int64 , error ) { var nn int64 n := len ( t . texts ) - 1 if n == - 1 { ni , err := w . Write ( unsafeString2Bytes ( t . template ) ) return int64 ( ni ) , err } for i := 0 ; i < n ; i ++ { ni , err := w . Write ( t . texts [ i ] ) nn += int64 ( ni ) if err != nil { return nn , err } ni , err = f ( w , t . tags [ i ] ) nn += int64 ( ni ) if err != nil { return nn , err } } ni , err := w . Write ( t . texts [ n ] ) nn += int64 ( ni ) return nn , err }
// ExecuteFunc calls f on each template tag (placeholder) occurrence.
//
// Returns the number of bytes written to w.
//
// This function is optimized for frozen templates.
// Use ExecuteFunc for constantly changing templates.
ExecuteFunc calls f on each template tag ( placeholder ) occurrence . Returns the number of bytes written to w . This function is optimized for frozen templates . Use ExecuteFunc for constantly changing templates .