Ответ
При чтении файла в Go происходят следующие шаги:
- Открытие файла через
os.Open()- возвращает*os.Fileи ошибку - Чтение данных (буферизированное через
bufioили напрямую) - Закрытие файла через
file.Close()
Основные нюансы:
- Обязательно нужно закрывать файл (лучше через defer)
- Для больших файлов лучше читать по частям
- Обработка ошибок на каждом этапе критически важна
Пример:
file, err := os.Open("data.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}