golang: Как я могу использовать pflag с другими пакетами, которые используют флаг?
Как использовать pflag при использовании других пакетов, использующих флаг?
Некоторые из этих пакетов определяют флаги для пакета флага (например, в их функциях init) и требуют вызова flag.Parse ().
Для определения флагов с помощью пакета pflag требуется вызвать pflag.Parse ().
Один из вызовов flag.Parse () и pflag.Parse () завершится ошибкой, когда аргументы будут смешаны.
Как использовать pflag с другими пакетами, которые используют флаг?
3 ответа
Я получил ответ от сопровождающего для pflag.
Решение состоит в том, чтобы "импортировать" все флаги, определенные для flag, в pflag, а затем вызвать только pflag.Parse().
Для этого pflag предоставляет вспомогательную функцию AddGoFlagSet().
Я нашел два подхода к этому.
Один с pflags AddGoFlags(). IE.
f := pflag.NewFlagSet("goFlags", pflag.ExitOnError) f.AddGoFlagSet(flag.CommandLine) f.Parse([]string{ "--v=10", // Your go flags that will be pass to other programs. }) flag.Parse()
Другой подход, который вы можете использовать. Это не по книге, но я видел, как некоторые использовали это... получить значение флага другим pflag.
pflag.StringVar(&f, "f", "**", "***") pflag.Parse()
Установите значение в качестве значения флага.
flag.Set("v", f)
flag.Parse()
и ты хорош, чтобы пойти..
Как использовать pflag с другими пакетами, которые используют флаг?
Ты не можешь. Это или или. plfag - это замена флага, а не аддона.