Полное руководство по пакету bufio.Scanner Go: методы и примеры кода

Go — мощный язык программирования, известный своей простотой и эффективностью. Он предоставляет богатую стандартную библиотеку, включающую пакет bufio, предлагающий функциональные возможности для буферизованных операций ввода-вывода. В этой статье мы рассмотрим пакет bufio.Scanner в Go и узнаем о его различных методах на примерах кода.

  1. NewScanner(rd io.Reader) *Scanner:
    Функция NewScanner создает новый сканер для чтения из указанного io.Reader. Он принимает io.Reader в качестве параметра и возвращает указатель на сканер. Вот пример:
package main
import (
    "bufio"
    "fmt"
    "strings"
)
func main() {
    reader := strings.NewReader("Hello\nWorld\n")
    scanner := bufio.NewScanner(reader)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
    }
}
  1. Scan() bool:
    Метод Scan считывает следующую строку из входных данных и возвращает true, если строка успешно отсканирована. Он возвращает false, если строк для сканирования больше нет. Вот пример:
package main
import (
    "bufio"
    "fmt"
    "strings"
)
func main() {
    reader := strings.NewReader("Hello\nWorld\n")
    scanner := bufio.NewScanner(reader)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
    }
}
  1. Строка Text():
    Метод Text возвращает самую последнюю строку, отсканированную сканером, в виде строки. Вот пример:
package main
import (
    "bufio"
    "fmt"
    "strings"
)
func main() {
    reader := strings.NewReader("Hello\nWorld\n")
    scanner := bufio.NewScanner(reader)
    for scanner.Scan() {
        line := scanner.Text()
        fmt.Println(line)
    }
}
  1. Split(splitFunc bufio.SplitFunc):
    Метод Split устанавливает функцию для настройки поведения разделения строк. В качестве параметра он принимает SplitFunc — определяемую пользователем функцию, которая разбивает входные данные на строки. Вот пример:
package main
import (
    "bufio"
    "fmt"
    "strings"
)
func main() {
    reader := strings.NewReader("Hello,World")
    scanner := bufio.NewScanner(reader)
    scanner.Split(bufio.ScanWords)
    for scanner.Scan() {
        word := scanner.Text()
        fmt.Println(word)
    }
}

В этой статье мы рассмотрели пакет bufio.Scanner в Go и его различные методы. Мы рассмотрели функцию NewScanner, метод Scan, метод Text и метод Split. Используя эти методы, вы можете эффективно читать и обрабатывать входные данные в буферизованном виде с помощью bufio.Scanner. Поэкспериментируйте с приведенными примерами кода, чтобы глубже понять, как этот пакет можно использовать в ваших программах Go.

Не забудьте импортировать пакет «bufio» и обратиться к официальной документации Go за более подробной информацией и дополнительными методами, доступными в пакете bufio.Scanner.