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

Метод csv.Writer.Flush

Метод csv.Writer.Flush записывает все данные, накопленные во внутреннем буфере, в основной поток вывода (например, в файл или в сетевой сокет). После вызова Flush буфер становится пустым, и все ранее записанные записи гарантированно передаются в нижележащий поток. Метод не принимает параметров и не возвращает значений. Если во время записи произошла ошибка, она сохраняется внутри объекта Writer и ее можно получить методом Error.

Синтаксис

writer.Flush()

Пример

Давайте создадим CSV-запись и запишем ее в файл, а затем вызовем Flush для принудительной записи всех данных:

package main import ( "encoding/csv" "os" ) func main() { file, _ := os.Create("data.csv") defer file.Close() writer := csv.NewWriter(file) writer.Write([]string{"a", "b", "c"}) writer.Write([]string{"d", "e", "f"}) writer.Flush() }

После выполнения кода в файле data.csv будут записаны две строки:

a,b,c d,e,f

Пример

Давайте запишем несколько записей и проверим, что после вызова Flush буфер очищается. Для этого мы создадим писатель с буфером небольшого размера и вызовем Flush после каждой записи:

package main import ( "bytes" "encoding/csv" "fmt" ) func main() { buf := &bytes.Buffer{} writer := csv.NewWriter(buf) writer.Write([]string{"1", "2", "3"}) writer.Flush() fmt.Printf("After first flush: %q\n", buf.String()) writer.Write([]string{"4", "5", "6"}) writer.Flush() fmt.Printf("After second flush: %q\n", buf.String()) }

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

"After first flush: "1,2,3\n"" "After second flush: "1,2,3\n4,5,6\n""

Пример

Важно помнить, что Flush не возвращает ошибку, а сохраняет ее внутри объекта. Проверим это, записав в недоступный файл:

package main import ( "encoding/csv" "fmt" "os" ) func main() { file, _ := os.OpenFile("/root/data.csv", os.O_CREATE|os.O_WRONLY, 0644) defer file.Close() writer := csv.NewWriter(file) writer.Write([]string{"a", "b", "c"}) writer.Flush() if err := writer.Error(); err != nil { fmt.Printf("Error: %v\n", err) } }

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

"Error: open /root/data.csv: permission denied"

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

  • метод csv.Writer.Write,
    который записывает одну CSV-запись в буфер
  • метод csv.Writer.WriteAll,
    который записывает все записи и автоматически вызывает Flush
  • функцию csv.NewWriter,
    которая создает новый объект Writer
  • метод csv.Writer.Error,
    который возвращает последнюю ошибку записи
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить