Функция flag.Args
Функция flag.Args возвращает слайс строк, содержащий все аргументы командной строки,
которые не были обработаны пакетом flag. То есть это те аргументы, которые не являются
определенными флагами (например, не начинаются с - или не соответствуют объявленным флагам).
Обычно она используется после вызова flag.Parse, чтобы получить доступ к позиционным аргументам.
Синтаксис
flag.Args() []string
Функция не принимает параметров и возвращает слайс строк.
Пример
Рассмотрим простую программу, которая ожидает несколько позиционных аргументов после флагов:
package main
import (
"flag"
"fmt"
)
func main() {
// Определяем флаг -name
name := flag.String("name", "Guest", "user name")
// Парсим аргументы командной строки
flag.Parse()
// Получаем необработанные аргументы
args := flag.Args()
fmt.Println("Name:", *name)
fmt.Println("Args:", args)
}
Если запустить программу с командой:
go run main.go -name=Alice arg1 arg2 arg3
Результат выполнения кода:
"Name: Alice"
"Args: [arg1 arg2 arg3]"
Как видим, флаг -name был обработан и исключен из результата, а остальные аргументы попали в слайс.
Пример
Если не обработанных аргументов нет, функция возвращает пустой слайс:
package main
import (
"flag"
"fmt"
)
func main() {
flag.Parse()
res := flag.Args()
fmt.Println(res)
}
Запустим программу без дополнительных аргументов:
go run main.go
Результат выполнения кода:
[]
Возвращается пустой слайс, так как аргументы не были переданы.
Пример
Важно, что функция flag.Args работает только после вызова flag.Parse.
Если вызвать ее до парсинга, она вернет все аргументы, включая флаги:
package main
import (
"flag"
"fmt"
)
func main() {
// Вызываем flag.Args до flag.Parse
resBefore := flag.Args()
fmt.Println("Before parse:", resBefore)
flag.Parse()
resAfter := flag.Args()
fmt.Println("After parse:", resAfter)
}
Запустим программу с флагом:
go run main.go -x=123
Результат выполнения кода:
"Before parse: [-x=123]"
"After parse: []"
До парсинга функция вернула все аргументы, включая флаг, а после парсинга флаг был обработан и удален из слайса.
Смотрите также
-
функцию
flag.Arg,
которая возвращает отдельный аргумент по индексу -
функцию
flag.NArg,
которая возвращает количество необработанных аргументов -
функцию
flag.Parse,
которая выполняет парсинг флагов командной строки -
массив
os.Args,
который содержит все аргументы командной строки