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

Функция bufio.NewReadWriter

Функция bufio.NewReadWriter создает новый объект типа *bufio.ReadWriter, который объединяет в себе буферизированный ридер и буферизированный райтер. Это позволяет выполнять как чтение, так и запись с использованием буферизации через единый интерфейс. Первым параметром функция принимает объект *bufio.Reader, вторым параметром - объект *bufio.Writer.

Синтаксис

bufio.NewReadWriter(r *bufio.Reader, w *bufio.Writer) *bufio.ReadWriter

Пример

Давайте создадим буферизированный объект для чтения и записи в файл:

package main import ( "bufio" "fmt" "os" ) func main() { file, err := os.Create("example.txt") if err != nil { fmt.Println("Error creating file:", err) return } defer file.Close() reader := bufio.NewReader(file) writer := bufio.NewWriter(file) rw := bufio.NewReadWriter(reader, writer) _, err = rw.WriteString("Hello, World!") if err != nil { fmt.Println("Error writing:", err) return } err = rw.Flush() if err != nil { fmt.Println("Error flushing:", err) return } fmt.Println("Data written successfully") }

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

"Data written successfully"

Пример

Давайте используем bufio.NewReadWriter для чтения данных после записи:

package main import ( "bufio" "fmt" "os" ) func main() { file, err := os.Create("data.txt") if err != nil { fmt.Println("Error creating file:", err) return } defer file.Close() reader := bufio.NewReader(file) writer := bufio.NewWriter(file) rw := bufio.NewReadWriter(reader, writer) _, err = rw.WriteString("Hello, Go!") if err != nil { fmt.Println("Error writing:", err) return } err = rw.Flush() if err != nil { fmt.Println("Error flushing:", err) return } file.Seek(0, 0) data, err := rw.ReadString('\n') if err != nil { fmt.Println("Error reading:", err) return } fmt.Println(data) }

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

"Hello, Go!"

Пример

Давайте создадим буферизированный объект для работы с вводом-выводом через стандартные потоки:

package main import ( "bufio" "fmt" "os" ) func main() { reader := bufio.NewReader(os.Stdin) writer := bufio.NewWriter(os.Stdout) rw := bufio.NewReadWriter(reader, writer) fmt.Print("Enter your name: ") name, err := rw.ReadString('\n') if err != nil { fmt.Println("Error reading:", err) return } name = name[:len(name)-1] _, err = rw.WriteString("Hello, " + name + "!\n") if err != nil { fmt.Println("Error writing:", err) return } err = rw.Flush() if err != nil { fmt.Println("Error flushing:", err) return } }

При вводе "Alice" результат выполнения кода:

"Enter your name: " "Hello, Alice!"

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

  • функцию bufio.NewReader,
    которая создает новый буферизированный ридер
  • функцию bufio.NewWriter,
    которая создает новый буферизированный райтер
  • функцию bufio.ReadWriter,
    которая представляет структуру для буферизированного чтения и записи
  • функцию bufio.Writer.Flush,
    которая сбрасывает буфер записи в основной поток
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить