code: func ExecuteFunc(template, startTag, endTag string, w io.Writer, f TagFunc) (int64, error) {
  	s := unsafeString2Bytes(template)
  	a := unsafeString2Bytes(startTag)
  	b := unsafeString2Bytes(endTag)
  
  	var nn int64
  	var ni int
  	var err error
  	for {
  		n := bytes.Index(s, a)
  		if n < 0 {
  			break
  		}
  		ni, err = w.Write(s[:n])
  		nn += int64(ni)
  		if err != nil {
  			return nn, err
  		}
  
  		s = s[n+len(a):]
  		n = bytes.Index(s, b)
  		if n < 0 {
  			// cannot find end tag - just write it to the output.
  			ni, _ = w.Write(a)
  			nn += int64(ni)
  			break
  		}
  
  		ni, err = f(w, unsafeBytes2String(s[:n]))
  		nn += int64(ni)
  		s = s[n+len(b):]
  	}
  	ni, err = w.Write(s)
  	nn += int64(ni)
  
  	return nn, err
  }
docs: // ExecuteFunc calls f on each template tag (placeholder) occurrence.
  //
  // Returns the number of bytes written to w.
  //
  // This function is optimized for constantly changing templates.
  // Use Template.ExecuteFunc for frozen templates.