Ответ 1
Вам просто нужно проверить flag.NArg()
.
От https://golang.org/pkg/flag/#NArg:
NArg - количество аргументов, оставшихся после обработки флагов.
flag.Parse()
if flag.NArg() == 0 {
flag.Usage()
os.Exit(1)
}
Иногда мне нужно передать аргумент в командной строке без имени, например команду wc
, которая принимает имя файла как вход:
wc filename.txt
С пакетом флажка похоже, что каждому знаку должно быть присвоено имя со значением по умолчанию, если оно не указано.
filename := flag.String("filename", "foo.txt", "Which file to count the words for")
Однако я не хочу значения по умолчанию, я хочу, чтобы программа выходила с кодом ошибки, если аргумент не указан. Как добавить обязательный аргумент в двоичный файл Go?
Я также хотел бы проанализировать аргументы с информацией о типе, поэтому просто проверка Args() напрямую не делает этого.
Вам просто нужно проверить flag.NArg()
.
От https://golang.org/pkg/flag/#NArg:
NArg - количество аргументов, оставшихся после обработки флагов.
flag.Parse()
if flag.NArg() == 0 {
flag.Usage()
os.Exit(1)
}
Вы также можете использовать функцию flag.Narg(), чтобы убедиться, что у вас есть необходимое количество позиционных аргументов, хотя я не знаю, что это дает вам более len (флаг .Args())
if flag.NArg() < minArgs {
// do something
...
}