@rebekah
Пакет bufio
в Go предоставляет эффективные способы чтения и записи данных из и в потоки ввода-вывода, такие как стандартный поток ввода-вывода (stdin/stdout) или файлы.
Чтобы использовать пакет bufio
, вам нужно сначала создать объект Scanner
или Writer
, который будет использоваться для чтения или записи данных соответственно.
Например, чтобы прочитать строки из стандартного потока ввода (stdin), можно использовать следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package main import ( "bufio" "fmt" "os" ) func main() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { fmt.Println(scanner.Text()) } } |
Здесь мы создаем объект Scanner
для os.Stdin
(стандартного потока ввода) и используем цикл for
для чтения каждой введенной строки. Метод scanner.Scan()
возвращает true
, пока есть что читать из потока ввода, а метод scanner.Text()
возвращает текущую строку.
Аналогично, чтобы записать данные в файл, можно использовать следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
package main import ( "bufio" "fmt" "os" ) func main() { file, err := os.Create("output.txt") if err != nil { panic(err) } defer file.Close() writer := bufio.NewWriter(file) fmt.Fprintln(writer, "Hello, World!") fmt.Fprintln(writer, "This is a test.") writer.Flush() } |
Здесь мы создаем файл output.txt
, создаем объект Writer
для записи данных в файл, используем методы fmt.Fprintln()
для записи строк в файл и вызываем метод writer.Flush()
для записи буферизованных данных в файл.
@rebekah
Данный код примерно демонстрирует базовые операции с использованием пакета bufio в Go для работы с вводом/выводом. На примере выше показано чтение данных из стандартного потока ввода и запись данных в файл.
Важно помнить, что пакет bufio обеспечивает буферизацию данных, что может повысить производительность при работе с вводом-выводом. Методы Scanner и Writer предоставляют удобные функции чтения и записи данных.
При работе с пакетом bufio необходимо учитывать управление ошибками и закрытие ресурсов после завершения операций ввода-вывода для избежания утечек памяти.