Работа с параметрами командной строки
Движение приносит победу
Говоря на чистоту, у автора было велико желание (и логика повествования требует этого), после рассмотрения функций незамедлительно перейти к методам, которые есть разновидность функций. Но есть вопросы, которые требуют ответов. давайте же сейчас заполним один из таких пробелов в наших знаниях, а именно: разберёмся с параметрами командной строки и способами их обработки.
Фактически, инструментов для такой работы - два. Это переменная пакета os, именуемая os.Args, а также специальный пакет flag. Пойдём по порядку.
os.Args
Экспортируемая переменная пакета os - os.Args - имеет тип []string. В первом элементе данного среза - os.Args[0] хранится название собственно текущего исполняемого файла, поэтому полезная информация начинается только со второго элемента:
Как видите, данная переменная содержит просто строки, и нет никаких инструментов, которые бы позволяли ввести синтаксис командной строки в привычном стиле, как, к примеру, -param: или --help. Таким образом, используя os.Args вы будете вынуждены вручную парсить и обрабатывать пользовательский ввод, требуя от пользователя следовать вашему замыслу. приведу пример такой развёрнутой обработки user input`а:
Как видите, решение вполне работоспособно, но несколько громоздко. Теперь рассмотрим более специализированное решение - пакет flag.
Пакет flag
Это специализированный встроенный пакет для работы с параметрами командной строки. Он позволяет задавать имена и типы параметров-флагов, а также их значения по умолчанию. В случае неверного ввода, автоматически генерируется и выводится на экран справочная информация. Поэтому, если вы не хотите раскрывать пользователю перечень поддерживаемых вашей программой параметров, вам следует предпочесть использование os.Args, которая будет хранить молчание. Приведём пример работы с пакетом flags:
Как видите, тема компактная, но весьма полезная. Go - это язык преимущественно бэкэнда, поэтому при запуске исполнимого файла, daemon`а или windows-службы параметры командной строки - это скорее правило, чем редкость.
Раунд!
Last updated
Was this helpful?