🟢 Лёгкий · 1 очк. I/O и потоки данных
Чем os.ReadFile (Go 1.16+) отличается от os.Open + io.ReadAll?
A os.ReadFile открывает, читает и закрывает файл в одном вызове; os.Open требует ручного defer Close и чтения
B os.ReadFile быстрее
C os.Open не поддерживает бинарные файлы
D Нет разницы
Объяснение вопроса

os.ReadFile (Go 1.16+) - удобная функция для чтения небольших файлов целиком:

// Просто: одна строка
data, err := os.ReadFile("config.json")

// Эквивалент через os.Open:
f, err := os.Open("config.json")
if err != nil { return err }
defer f.Close()
data, err := io.ReadAll(f)

Когда что использовать:

  • os.ReadFile - для небольших файлов, которые помещаются в память целиком (конфиги, шаблоны)
  • os.Open + потоковое чтение - для больших файлов (логи, дампы), когда загрузка в память нежелательна
  • os.WriteFile(name, data, perm) - аналогичная обертка для записи
// Запись файла - тоже одна строка
os.WriteFile("output.txt", []byte("hello"), 0644)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.