Golang работа с командной строкой cli

Работа с командной строкой в Golang происходит с помощью пакета `flag`, который позволяет определять и использовать флаги командной строки в вашей программе. Флаги это опции, которые можно передать при запуске программы, например:

```bash

go run main.go -flag1=value1 -flag2=value2 arg1 arg2 arg3

```

В этом примере мы передаем программе два флага `flag1` и `flag2`, значения которых равны `value1` и `value2` соответственно, и три аргумента `arg1`, `arg2` и `arg3`.

Для определения нового флага, нужно создать новую переменную, к которой привязать флаг с помощью функции `flag.Var()`. Пример использования:

```go

import "flag"

var (

flag1 = flag.String("flag1", "default value", "description")

flag2 = flag.Int("flag2", 123, "description")

)

func main() {

flag.Parse()

// Ваш код

}

```

Функция `flag.Parse()` подключается в начале программы и парсит все переданные флаги командной строки. Если вы попытаетесь использовать флаг, который не был объявлен в функцяии `flag.Var()`, то программа выведет ошибку.

Если вы хотите передавать несколько значений для одного флага, например, список строк или чисел, то используйте функцию `flag.Var()` вместо `flag.String()` или `flag.Int()`.

Пример определения собственного типа флага (конвертера), который может принимать список значений:

```go

type StringsFlag []string

func (s *StringsFlag) String() string {

return strings.Join(*s, ",")

}

func (s *StringsFlag) Set(value string) error {

*s = append(*s, value)

return nil

}

func main() {

var s StringsFlag

flag.Var(&s, "strings", "comma-separated list of strings")

flag.Parse()

fmt.Println(s) // Выведет переданный список строк

}

```

11
Начать дискуссию