const RuneError … const RuneSelf … const MaxRune … const UTFMax … const surrogateMin … const surrogateMax … const t1 … const tx … const t2 … const t3 … const t4 … const t5 … const maskx … const mask2 … const mask3 … const mask4 … const rune1Max … const rune2Max … const rune3Max … const locb … const hicb … const xx … const as … const s1 … const s2 … const s3 … const s4 … const s5 … const s6 … const s7 … const runeErrorByte0 … const runeErrorByte1 … const runeErrorByte2 … var first … type acceptRange … var acceptRanges … // FullRune reports whether the bytes in p begin with a full UTF-8 encoding of a rune. // An invalid encoding is considered a full Rune since it will convert as a width-1 error rune. func FullRune(p []byte) bool { … } // FullRuneInString is like FullRune but its input is a string. func FullRuneInString(s string) bool { … } // DecodeRune unpacks the first UTF-8 encoding in p and returns the rune and // its width in bytes. If p is empty it returns ([RuneError], 0). Otherwise, if // the encoding is invalid, it returns (RuneError, 1). Both are impossible // results for correct, non-empty UTF-8. // // An encoding is invalid if it is incorrect UTF-8, encodes a rune that is // out of range, or is not the shortest possible UTF-8 encoding for the // value. No other validation is performed. func DecodeRune(p []byte) (r rune, size int) { … } // DecodeRuneInString is like [DecodeRune] but its input is a string. If s is // empty it returns ([RuneError], 0). Otherwise, if the encoding is invalid, it // returns (RuneError, 1). Both are impossible results for correct, non-empty // UTF-8. // // An encoding is invalid if it is incorrect UTF-8, encodes a rune that is // out of range, or is not the shortest possible UTF-8 encoding for the // value. No other validation is performed. func DecodeRuneInString(s string) (r rune, size int) { … } // DecodeLastRune unpacks the last UTF-8 encoding in p and returns the rune and // its width in bytes. If p is empty it returns ([RuneError], 0). Otherwise, if // the encoding is invalid, it returns (RuneError, 1). Both are impossible // results for correct, non-empty UTF-8. // // An encoding is invalid if it is incorrect UTF-8, encodes a rune that is // out of range, or is not the shortest possible UTF-8 encoding for the // value. No other validation is performed. func DecodeLastRune(p []byte) (r rune, size int) { … } // DecodeLastRuneInString is like [DecodeLastRune] but its input is a string. If // s is empty it returns ([RuneError], 0). Otherwise, if the encoding is invalid, // it returns (RuneError, 1). Both are impossible results for correct, // non-empty UTF-8. // // An encoding is invalid if it is incorrect UTF-8, encodes a rune that is // out of range, or is not the shortest possible UTF-8 encoding for the // value. No other validation is performed. func DecodeLastRuneInString(s string) (r rune, size int) { … } // RuneLen returns the number of bytes in the UTF-8 encoding of the rune. // It returns -1 if the rune is not a valid value to encode in UTF-8. func RuneLen(r rune) int { … } // EncodeRune writes into p (which must be large enough) the UTF-8 encoding of the rune. // If the rune is out of range, it writes the encoding of [RuneError]. // It returns the number of bytes written. func EncodeRune(p []byte, r rune) int { … } func encodeRuneNonASCII(p []byte, r rune) int { … } // AppendRune appends the UTF-8 encoding of r to the end of p and // returns the extended buffer. If the rune is out of range, // it appends the encoding of [RuneError]. func AppendRune(p []byte, r rune) []byte { … } func appendRuneNonASCII(p []byte, r rune) []byte { … } // RuneCount returns the number of runes in p. Erroneous and short // encodings are treated as single runes of width 1 byte. func RuneCount(p []byte) int { … } // RuneCountInString is like [RuneCount] but its input is a string. func RuneCountInString(s string) (n int) { … } // RuneStart reports whether the byte could be the first byte of an encoded, // possibly invalid rune. Second and subsequent bytes always have the top two // bits set to 10. func RuneStart(b byte) bool { … } // Valid reports whether p consists entirely of valid UTF-8-encoded runes. func Valid(p []byte) bool { … } // ValidString reports whether s consists entirely of valid UTF-8-encoded runes. func ValidString(s string) bool { … } // ValidRune reports whether r can be legally encoded as UTF-8. // Code points that are out of range or a surrogate half are illegal. func ValidRune(r rune) bool { … }