func AppendHTMLEscape(dst []byte, s string) []byte {
	if strings.IndexByte(s, '<') < 0 &&
		strings.IndexByte(s, '>') < 0 &&
		strings.IndexByte(s, '"') < 0 &&
		strings.IndexByte(s, '\'') < 0 {

		// fast path - nothing to escape
		return append(dst, s...)
	}

	// slow path
	var prev int
	var sub string
	for i, n := 0, len(s); i < n; i++ {
		sub = ""
		switch s[i] {
		case '<':
			sub = "&lt;"
		case '>':
			sub = "&gt;"
		case '"':
			sub = "&quot;"
		case '\'':
			sub = "&#39;"
		}
		if len(sub) > 0 {
			dst = append(dst, s[prev:i]...)
			dst = append(dst, sub...)
			prev = i + 1
		}
	}
	return append(dst, s[prev:]...)
}
func AppendHTMLEscape(dst []byte, s string) []byte {
	if strings.IndexByte(s, '<') < 0 &&
		strings.IndexByte(s, '>') < 0 &&
		strings.IndexByte(s, '"') < 0 &&
		strings.IndexByte(s, '\'') < 0 {

		
		return append(dst, s...)
	}

	
	var prev int
	var sub string
	for i, n := 0, len(s); i < n; i++ {
		sub = ""
		switch s[i] {
		case '<':
			sub = "&lt;"
		case '>':
			sub = "&gt;"
		case '"':
			sub = "&quot;"
		case '\'':
			sub = "&#39;"
		}
		if len(sub) > 0 {
			dst = append(dst, s[prev:i]...)
			dst = append(dst, sub...)
			prev = i + 1
		}
	}
	return append(dst, s[prev:]...)
}
func AppendHTMLEscape ( dst [ ] byte , s string ) [ ] byte { if strings . IndexByte ( s , '<' ) < 0 && strings . IndexByte ( s , '>' ) < 0 && strings . IndexByte ( s , '"' ) < 0 && strings . IndexByte ( s , '\'' ) < 0 { // fast path - nothing to escape return append ( dst , s ... ) } // slow path var prev int var sub string for i , n := 0 , len ( s ) ; i < n ; i ++ { sub = " " switch s [ i ] { case '<' : sub = " " case '>' : sub = " " case '"' : sub = " " case '\'' : sub = " " } if len ( sub ) > 0 { dst = append ( dst , s [ prev : i ] ... ) dst = append ( dst , sub ... ) prev = i + 1 } } return append ( dst , s [ prev : ] ... ) }
// AppendHTMLEscape appends html-escaped s to dst and returns the extended dst.
AppendHTMLEscape appends html - escaped s to dst and returns the extended dst .