Новость из категории: Информация

Стандартная библиотека языка Go и общие выводы

Содержание:
1. Стандартная библиотека (Вы читаете данный раздел);
2. Сеть и веб-приложения;
3. GUI и базы данных;
4. Будущее «новой волны».
Стандартная библиотека языка Go и общие выводы

Стандартная библиотека языка Go очень обширна. На странице http://golang.org/pkg приведен впечатляющий список всех пакетов стандартной библиотеки.

Работа с архивами обеспечивается пакетами tar, zip, bzip2, fiate, gzip, izw и ziib, которые разделены на две категории: archive и compress, хотя пакеты из обоих категории обеспечивают работу с архивами соответствующих форматов. Для архивов bzip2 почему-то доступно только чтение (хотя стандарт bzip2 полно-стью открыт), для остальных - как чтение, так и запись.

В категории container собраны пакеты, обеспечивающие работу с обобщенными контейнерами heap, list, ring и vector. К сожалению, какого-либо универсального интерфейса работы с контейнерами (наподобие STL в C++) в Go нет. Например, чтобы добавить элемент в контейнер iist, нужно использовать методы PushFront или PushBack, а для типа vector - добавлять элементы можно только в конец методом Push (почему не PushBack для единообразия?). Для контейнера iist добавление в него всех элементов другого контейнера делается методами PushFrontList и PushBackList, а для вектора аналогичный метод почему-то называется AppendVector (почему не PushBackVector?..). Все контейнеры оперируют объектами типа interfaced, а поскольку пустой интерфейс реализуют все объекты, то хранить в контейнерах можно что угодно. Кроме обобщенных контейнеров есть специализации для векторов строк и целых чисел IntVector и StringVector. Вероятно, именно эти две специализации нужны просто для удобства. В Go нет понятия алгоритмов, как в STL или аналогичных ей библиотеках. Для наиболее распространенных алгоритмов есть отдельные пакеты или функции. Так, пакет sort реализует сортировку массивов, срезов и контейнеров.



В стандартной библиотеке есть огромное количество пакетов для криптографии, которые покрывают практически все сколь-нибудь часто используемые алгоритмы. Не будучи специалистом сложно оценить качество их реализации и удобство использования, но, по-видимому, в Google очень серьезно отнеслись к этому аспекту библиотеки.

На первый взгляд очень интересным выглядит пакет ebnf, позволяющий работать с абстрактными грамматиками, записанными в популярном формате ebnf. К сожалению, он не является парсером как таковым, а только проверяет грамматику и преобразует ее в абстрактное дерево. Применить полученное представление к реальным данным никак нельзя, так что и пользы от этого модуля немного.

Go все чаще используется для разработки android-приложений, впрочем, находятся умельцы, которые пишут на данном языке программирования и достаточно качественные apps для iOS! Если Вы решили попробовать свои силы на данном поприще и ваш айфон превратился в "кирпич", то проследуйте по ссылке ссылке (http://apple4you.ru), где ваш гаджет отремонтируют за несколько часов!

Отдельная группа пакетов позволяет работать с различными кодировками символов, например, такими как ascii85 (используется в PostScript и PDF). Unicode поддерживается в Go изначально.

Пакет exec используется для запуска внешних команд и является удобной оберткой низкоуровневого вызова os.StartProcess. Имеет простой синтаксис и позволяет легко перенаправлять потоки ввода-вывода.
Пакет regexp обеспечивает работу с регулярными выражениями и содержит все обычные функции - поиск, замену, захват и подстановку подвыражений и т.д. Минимальная программа, которая производит замену одной подстроки на другую, выглядит так:
package main
import ("fmt"; "regexp"; "os"; "strings";);
func main () {
reg, error := regexp.Compile ("Hello"); if error != nil {
fmt.Printf ("Не удалось создать рег. выражение: %s", J
error.String ()); os.Exit (1);
}
output:= string(reg.ReplaceAll(strings.Bytes("Hello world"), strings.Bytes("Good by")));
fmt.Println (output);
}

Очевидным минусом является необходимость использования «обертки» strings.Bytes(...) вокруг каждой строки, но в целом работа с регулярными выражениями мало чем отличается от таковой в других языках.
Группа пакетов для работы с изображениями позволяет работать с форматами bmp, gif, jpeg, png и tiff.

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх