TGViewer
Библиотека задач по Go | тесты, код, задания Библиотека задач по Go | тесты, код, задания @go_problems_lib · 6.74K subscribers
Post #769 1.35K

Forwarded from Библиотека Go-разработчика | Golang

Go-разработчики часто используют следующую конструкцию:

f, err := os.Create("file.txt")
if err != nil {
return err
}
defer f.Close()


Однако, для файлов с возможностью записи это может быть опасно, так как метод Close() может вернуть ошибку, которая игнорируется при использовании defer.

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

f, err := os.Create("file.txt")
if err != nil {
return err
}
if _, err := f.Write([]byte("Hello, world!")); err != nil {
f.Close()
return err
}
return f.Close()


Использование defer безопасно для чтения, но для записи стоит быть осторожнее и проверять ошибки вручную.

👉 Подробнее
joe shaw Don't defer Close() on writable files It'll bite you some day
  • 👍 16
  • ❤‍🔥 1
More from @go_problems_lib
  1. Sep 15, 2026Post #1841
  2. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  3. Aug 4, 2026Post #1838
  4. Aug 4, 2026👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах…
  5. Aug 4, 2026Покупать новый курс каждый раз, когда меняется рабочая задача, — довольно странная механик…
  6. Jul 31, 2026Post #1835
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →