Работа с командной строкой в Golang происходит с помощью пакета `flag`, который позволяет определять и использовать флаги командной строки в вашей программе. Флаги это опции, которые можно передать при запуске программы, например:```bashgo run main.go -flag1=value1 -flag2=value2 arg1 arg2 arg3```В этом примере мы передаем программе два флага `flag1` и `flag2`, значения которых равны `value1` и `value2` соответственно, и три аргумента `arg1`, `arg2` и `arg3`.Для определения нового флага, нужно создать новую переменную, к которой привязать флаг с помощью функции `flag.Var()`. Пример использования:```goimport "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()`.Пример определения собственного типа флага (конвертера), который может принимать список значений:```gotype StringsFlag []stringfunc (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 StringsFlagflag.Var(&s, "strings", "comma-separated list of strings")flag.Parse()fmt.Println(s) // Выведет переданный список строк}```