Шаг 8.
Язык программирования Go.
Аргументы командной строки
На этом шаге рассмотрим пример иллюстрирующий работу с аргументами командной строки в Go.
Напишим программу, которая выводит сообщение вида "Иван изучает язык Go" (имя и название языка - это аргументы командной строки, переданные программе при выполнении).
Выполните следующие действия:
- Создайте каталог args.
- В Блокноте наберите следующие строки кода (рис. 1). Сохраните с именем args.go.
Рис. 1. Листинг программы args.go
Архив каталога args можно взять здесь.
- Откомпилируйте программу и выполните ее со следующими аргументами (рис. 2).
Рис. 2. Результат компиляции и выполнения программы
Поясним код программы args.go:
- пакет os содержит значения и функции для работы с операционной системой платформо-независимым образом. Переменная с именем Args, которая является частью пакета os, содержит аргументы командной строки (ее имя за пределами пакета os - os.Args);
- переменная os.Args - срез (slice) строк (фундаментальное понятие в Go) - последовательность (динамического размера) s элементов массива, в которой к отдельным элементам можно обратиться как s[i]. Первый элемент os.Args [0] - это имя самой команды; остальные элементы представляют собой аргументы, которые были переданы программе, когда началось ее выполнение;
- количество элементов среза определяется как len(s);
- оператор := в терминологии языка Go называется сокращенным объявлением переменной - одновременно объявление и инициализация переменной, компилятор Go автоматически определит тип переменной по присваиваемому значению. В примере, объявляются переменные who и lang типа string, далее переменным могут присваиваться только строковые значения;
- инструкция if проверяет условие, в данном случае – количество аргументов командной строки, и если оно удовлетворяется, выполняет соответствующий блок программного кода, заключенный в фигурные скобки;
- оператор присваивания =. Переменной who будет присвоено значение первого аргумента командной строки, если количество аргументов более 1 (т.е. кроме названия программы есть хотя бы один аргумент). Использовать оператор := нельзя, т.к. в этом случае будет объявлена и инициализирована новая переменная who, область видимости которой будет ограничена телом инструкции if.
Расширим данный пример. Нужно вывести сообщения вида "ИмяN изучает языкN". Пусть в командной строке задается 2N атрибутов в формате
имя файла имя1 язык1 имя2 язык2 ...
В программу следует внести изменения (рис. 3) и сохранить с именем argsN.go в папке argsN.
Рис. 3. Листинг программы argsN.go
Архив каталога argsN можно взять здесь.
Результат работы программы представлен на рисунке 4:
Рис. 4. Результат работы программы
Приведем некоторые пояснения:
- объявление var объявляет две переменные — who и lang типа string. Если переменная не инициализирована явно, она неявно инициализируется нулевым значением соответствующего типа (пустая строка для строк). В примере объявление неявно инициализирует строки who и lang;
- оператор += является присваивающим оператором;
- цикл for является единственной инструкцией цикла в Go. Вокруг трех компонентов цикла for скобки не используются. Фигурные же скобки обязательны, причем открывающая фигурная скобка обязана находиться в той же строке, что и инструкция последействие. Цикл имеет ряд разновидностей, одна из которых показана в примере:
for инициализация; условие; последействие {
// нуль или несколько инструкций
}
- индексная переменная цикла i объявлена в первой части цикла for и инициализирована значением 1;
- условие - это логическое выражение, которое вычисляется в начале каждой итерации цикла. Если его вычисление дает истинный результат, то выполняются инструкции тела цикла, иначе цикл завершается.
На следующем шаге начнем знакомиться с основами процедурного программирования на языке Go.
Предыдущий шаг
Содержание
Следующий шаг