135 подписчиков

[🧣] Работа с файлами в Go | Go на Примерах

140 прочитали
via Stable Diffusion 1.5
via Stable Diffusion 1.5

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

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

В этой статье мы рассмотрим, как работать с файлами в Go, включая чтение и запись в текстовые файлы.

Сначала мы пройдемся по программе и разберем общие моменты, а после - рассмотрим отдельные функции по отдельности.

Программа, которую мы разберем сегодня

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

Давайте пройдемся по этой программе шаг за шагом:

  1. Сначала мы импортируем необходимые пакеты: fmt для печати вывода на консоль, и os для создания и чтения из файлов.
  2. В функции main мы создаем новый файл example.txt с помощью функции os.Create. Эта функция возвращает объект файла и ошибку, поэтому мы проверяем, была ли ошибка, и паникуем (останавливаем программу), если была.
  3. Используя ключевое слово defer, мы гарантируем, что файл будет закрыт в конце основной функции. Это обычный паттерн в Go для обеспечения правильной очистки ресурсов.
  4. Мы создаем байтовый срез с данными, которые хотим записать в файл (data := []byte("Hello, world!")).
  5. Мы используем функцию file.Write для записи данных в файл. Эта функция возвращает количество записанных байт и ошибку, так что мы проверяем, не было ли ошибки, и в случае ее возникновения паникуем.
  6. Затем мы используем функцию os.ReadFile, чтобы прочитать содержимое файла обратно в память.
  7. Наконец, мы выводим содержимое файла на консоль с помощью fmt.Println(string(fileData)). Мы преобразуем фрагмент байта в строку с помощью функции string.

Разбор функций

os.Create

os.Create - это функция, предоставляемая пакетом Go os, которая создает новый файл с указанным именем. Вот сигнатура функции:

func Create(name string) (*File, error)

Параметр name задает имя создаваемого файла. Если файл уже существует, он будет очищен перед открытием.

os.Create возвращает объект *File и ошибку. Объект *File представляет вновь созданный файл и может быть использован для чтения из файла или записи в него. Объект error сообщает нам, если при создании файла возникли проблемы (например, если у нас нет разрешения на создание файла в указанном каталоге).

defer

defer - это ключевое слово в Go, которое назначает вызов функции на выполнение после возвращения внешней функции.

defer часто используется для обеспечения надлежащей очистки ресурсов после возвращения функции. Например, если мы открываем файл в функции, мы можем использовать defer, чтобы убедиться, что файл будет закрыт до возврата функции:

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

file.Write

file.Write возвращает количество записанных байтов и ошибку. Количество записанных байтов говорит нам о том, сколько данных было записано в файл, и если это число меньше длины данных, которые мы пытались записать, это означает, что произошла ошибка записи в файл (например, если диск был переполнен или у нас нет разрешения на запись в файл).

🎉✨ Поздравляю с завершением чтения статьи

Если Вам понравилось, можете подписаться, оставить комментарий и поставить лайк.

Также, можете взглянуть на некоторые из моих других публикаций, чтобы найти еще больше отличного контента 🔥:

[🧣] Осваиваем азы программирования на языке Go
MB Magazine2 апреля 2023
7 Смертных Грехов Программирования | Жадность
MB Magazine6 апреля 2023
[💾] Введение в Продвинутые Структуры Данных на Python
MB Magazine8 апреля 2023