golang flag

Пользователь

Привет всем начинающим прогерам и огромным знатокам. Подскажите мне пожалуйста, какие существуют флаги командной строки? Очень нужно. Сам что-то не особо смог найти инфу.


Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket
19 июня 2020 г., 12:08

Пользователь

Флаги командной строки это популярный способ указывать опции для консольных программ. К примеру, в команде wc -l -l является флагом командной строки.

В Go есть пакет flag, обеспечивающий базовые функции для работы с флагами. Мы будем использовать этот пакет для нашей демонстрационной консольной программы.


19 июня 2020 г., 12:18

Пользователь

	Для примера держи код с комментариями:
	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())
	}

Как-то так.


19 июня 2020 г., 12:24

Пользователь

Спасибо большое за такой большой код с комментариями, которые всё поясняют. Но это же только часть флагов. Может кто-нибудь скинет сайт, на котором почти все флаги рассматриваются?


19 июня 2020 г., 12:36

Пользователь

На портале диджитал в январе этого года вышла статья про использование пакета Flag в Golang. Сам читал её – самые основные флаги, которые чаще всего используются, рассмотрены, так что впитывай.


19 июня 2020 г., 12:43

Пользователь

Вот, спасибо большое, уже прочитал немного эту статью – классная. Продолжу дальше читать, а потом буду экспериментировать с новыми полученными знаниями.


19 июня 2020 г., 12:49

Пользователь

herminio: На портале диджитал в январе этого года вышла статья про использование пакета Flag в Golang. Сам читал её – самые основные флаги, которые чаще всего используются, рассмотрены, так что впитывай.

Не поделитесь ссылокй на статью ?

29 июня 2020 г., 7:03