Введение в стандартную библиотеку Go
На момент написания этой статьи дистрибутив Go уже достиг версии 1.21, а с момента создания этого сайта прошёл уже более года.
Стандартная библиотека Go очень богата (за исключением структур данных) и обладает мощными возможностями. API очень дружелюбны для разработчиков, и умение использовать стандартную библиотеку окажет значительную помощь в повседневной разработке. Например, вы можете разработать полноценный веб-проект без каких-либо внешних зависимостей, используя только три библиотеки: net/http, html/template и database/sql.
Содержимое стандартной библиотеки долгое время не обновлялось, потому что её действительно много. Поэтому ниже будет кратко описано назначение некоторых часто используемых стандартных библиотек, чтобы вы могли выбрать интересующие вас для изучения. Документация каждого пакета стандартной библиотеки подробно описывает его назначение.
fmt— пакет для обработки форматированного ввода-выводаhtml— пакет для работы с HTML-шаблонамиnet— предоставляет набор пакетов для сетевых операций, очень мощныйflag— пакет для разбора аргументов командной строкиreflect— пакет для работы с рефлексиейlog— встроенный пакет для ведения журналовsort— пакет для операций сортировкиregex— пакет для работы с регулярными выражениямиimage— пакет для работы с изображениямиtime— пакет для работы со временемunicode— пакет для работы с набором символов unicodeunsafe— предоставляет операции с указателями без ограничений типовsyscall— пакет системных вызовов, предоставляемых операционной системойtesting— пакет для тестирования, используется при написании тестовsync— пакет для работы с конкурентностьюcontext— пакет контекстаstrconv— пакет для преобразования строкstrings— пакет для работы со строкамиbytes— пакет для работы с байтовыми срезамиmaps— пакет для работы с mapslices— пакет для работы со срезамиio— определяет набор базовых IO-интерфейсов, таких какCloser,Writerи т.д., а также некоторые базовые функции IO-операцийio/fs— определяет набор интерфейсов файловой системы, является абстракцией файловой системыos— пакет для взаимодействия с операционной системой, предоставляет набор конкретных функций, можно просто понять как конкретную реализацию двух вышеупомянутыхos/signal— пакет сигналов операционной системы, используется для прослушивания сигналов ОС, в основном для реализации корректного завершения работы программыos/exec— пакет команд операционной системы, используется для выполнения команд ОСos/user— пакет пользователя операционной системы, используется для получения информации о пользователе ОСbufio— пакет буферизированного IO-чтения/записиpath— пакет для обработки путей, разделённых слэшами, например URLpath/filepath— пакет для работы с путями файловmath— пакет математических операцийmath/bits— пакет для битовых операцийmath/cmplx— пакет для работы с комплексными числами, также предоставляет набор функций для тригонометрических функцийmath/rand— пакет псевдослучайных чиселmath/big— пакет для высокоточных вычислений с большими числамиcontainer/heap— реализация минимальной кучиcontainer/list— реализация двусвязного спискаcontainer/ring— реализация кольцаarchive/zip— пакет для zip-архивацииarchive/tar— пакет для tar-архивацииcompress— пакет реализации алгоритмов сжатия, например gzip, flatedatabase/sql— пакет для взаимодействия с базами данныхencoding— пакет для работы с кодировками, имеет множество подпакетов, таких какjson,xmlи т.д., а такжеbase64crypto— пакет для работы с шифрованием, имеет множество подпакетов, таких как sha1, rsa и т.д.go/ast— пакет для отображения абстрактного синтаксического дерева исходного кода Gogo/parser— пакет для разбора исходного кода Go в абстрактное синтаксическое деревоgo/importer— предоставляет доступ к импортёруgo/format— пакет форматирования кода Goarena— предоставляет возможность ручного выделения и освобождения памяти, находится на экспериментальной стадииruntime— пакет операций времени выполнения, многие операции в Go реализованы с помощью этого пакета
