Флаги командной строки это популярный способ указывать опции для консольных программ. К примеру, в команде wc -l -l является флагом командной строки.
В Go есть пакет flag, обеспечивающий базовые функции для работы с флагами. Мы будем использовать этот пакет для нашей демонстрационной консольной программы.
Для примера держи код с комментариями:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package main import "flag" import "fmt" func main() { //Базовые определения флагов доступны для типов string, integer и boolean. Тут мы определяем флаг-строку word со значением по-умолчанию "foo" и коротким описанием. Функция flag.String возвращает указатель на строку (а не саму строку); мы посмотрим, как использовать этот указатель ниже. wordPtr := flag.String("word", "foo", "a string") //Тут мы декларируем флаги numb и fork, используя аналогичный подход, как и с флагом word. numbPtr := flag.Int("numb", 42, "an int") boolPtr := flag.Bool("fork", false, "a bool") //Также флаги можно определять, используя существующую переменную, объявленную ранее в программе. Обратите внимание, что мы передаем в функцию указатель. var svar string flag.StringVar(&svar, "svar", "bar", "a string var") //Как только все флаги определены, вызываем flag.Parse(), чтобы выполнить непосредственно разбор командной строки. flag.Parse() //Тут мы выводим на экран считанные значения флагов, и оставшиеся аргументы командной строки. Обратите внимание. что мы должны разыменовывать указатель, *wordPtr, например, чтобы получить реальные значения. fmt.Println("word:", *wordPtr) fmt.Println("numb:", *numbPtr) fmt.Println("fork:", *boolPtr) fmt.Println("svar:", svar) fmt.Println("tail:", flag.Args()) } |
Как-то так.
Спасибо большое за такой большой код с комментариями, которые всё поясняют. Но это же только часть флагов. Может кто-нибудь скинет сайт, на котором почти все флаги рассматриваются?
На портале диджитал в январе этого года вышла статья про использование пакета Flag в Golang. Сам читал её – самые основные флаги, которые чаще всего используются, рассмотрены, так что впитывай.
Вот, спасибо большое, уже прочитал немного эту статью – классная. Продолжу дальше читать, а потом буду экспериментировать с новыми полученными знаниями.
herminio: На портале диджитал в январе этого года вышла статья про использование пакета Flag в Golang. Сам читал её – самые основные флаги, которые чаще всего используются, рассмотрены, так что впитывай.
Не поделитесь ссылокй на статью ?