Функция bufio.NewScanner
Функция bufio.NewScanner создает новый объект Scanner,
который используется для построчного чтения данных из входного потока
(например, из файла, стандартного ввода или сетевого соединения).
В качестве параметра функция принимает интерфейс io.Reader,
из которого будут считываться данные. Возвращаемое значение -
указатель на структуру Scanner, предоставляющую методы
для итеративного чтения данных.
Синтаксис
bufio.NewScanner(r io.Reader) *bufio.Scanner
Пример
Давайте создадим сканер для чтения строк из стандартного ввода:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
fmt.Print("Enter text: ")
scanner.Scan()
text := scanner.Text()
fmt.Printf("You entered: %s\n", text)
}
Результат выполнения кода при вводе строки "hello world":
"Enter text: hello world"
"You entered: hello world"
Пример
Давайте прочитаем все строки из файла с помощью сканера:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
fmt.Println(line)
}
if err := scanner.Err(); err != nil {
fmt.Println("Error reading file:", err)
}
}
Результат выполнения кода для файла с тремя строками:
"first line"
"second line"
"third line"
Пример
Давайте разобьем строку на слова с помощью кастомной функции разбиения:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
data := "one two three four five"
scanner := bufio.NewScanner(strings.NewReader(data))
scanner.Split(bufio.ScanWords)
for scanner.Scan() {
word := scanner.Text()
fmt.Println(word)
}
}
Результат выполнения кода:
"one"
"two"
"three"
"four"
"five"
Смотрите также
-
функцию
bufio.NewReader,
которая создает буферизированный ридер для чтения данных -
функцию
bufio.NewWriter,
которая создает буферизированный райтер для записи данных -
функцию
bufio.Scanner.Scan,
которая выполняет чтение следующего токена -
функцию
bufio.Scanner.Text,
которая возвращает строковое представление прочитанного токена