РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
695 of 1593 menu

Метод bufio.Reader.ReadRune

Метод ReadRune типа bufio.Reader читает один символ Unicode (руну) из буферизированного потока данных. В отличие от методов чтения байтов, он корректно обрабатывает многобайтовые символы UTF-8. Метод возвращает три значения: прочитанную руну, количество байт, которые она занимает в кодировке UTF-8, и ошибку. Если чтение выполнено успешно, ошибка будет равна nil.

Синтаксис

func (b *bufio.Reader) ReadRune() (r rune, size int, err error)

Пример

Давайте прочитаем первый символ из строки "Привет":

package main import ( "bufio" "fmt" "strings" ) func main() { s := "Привет" reader := bufio.NewReader(strings.NewReader(s)) r, size, err := reader.ReadRune() if err != nil { fmt.Println("Error:", err) return } fmt.Printf("Символ: %c, байт: %d\n", r, size) }

Результат выполнения кода:

"Символ: П, байт: 2"

В этом примере метод правильно определил, что символ "П" занимает 2 байта в UTF-8.

Пример

Давайте прочитаем несколько символов из строки "Hello":

package main import ( "bufio" "fmt" "strings" ) func main() { s := "Hello" reader := bufio.NewReader(strings.NewReader(s)) for i := 0; i < 3; i++ { r, size, err := reader.ReadRune() if err != nil { fmt.Println("Error:", err) break } fmt.Printf("Символ %d: %c, байт: %d\n", i+1, r, size) } }

Результат выполнения кода:

"Символ 1: H, байт: 1" "Символ 2: e, байт: 1" "Символ 3: l, байт: 1"

В этом примере все символы английского алфавита занимают по 1 байту.

Пример

Давайте прочитаем символы из строки "🔤ABC" и обработаем возможные ошибки:

package main import ( "bufio" "fmt" "strings" ) func main() { s := "🔤ABC" reader := bufio.NewReader(strings.NewReader(s)) for { r, size, err := reader.ReadRune() if err != nil { fmt.Println("End of input or error:", err) break } fmt.Printf("Символ: %c, байт: %d\n", r, size) } }

Результат выполнения кода:

"Символ: 🔤, байт: 4" "Символ: A, байт: 1" "Символ: B, байт: 1" "Символ: C, байт: 1" "End of input or error: EOF"

В этом примере эмодзи занимает 4 байта, а буквы английского алфавита по 1 байту. Когда метод достигает конца потока, он возвращает ошибку io.EOF.

Смотрите также

  • метод bufio.Reader.ReadByte,
    который читает один байт из потока
  • метод bufio.Reader.ReadString,
    который читает строку до заданного разделителя
  • метод bufio.Reader.ReadBytes,
    который читает байты до заданного разделителя
  • метод bufio.Reader.ReadLine,
    который читает одну строку из потока
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить