golang flag

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

от julian , в категории: Общие вопросы , 4 года назад

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


Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

6 ответов

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

от gracie , 4 года назад

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

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


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

от lauren , 4 года назад

Для примера держи код с комментариями:

 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())
}

Как-то так.


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

от julian , 4 года назад

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


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

от herminio , 4 года назад

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


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

от julian , 4 года назад

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


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

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

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