Функция flag.Arg
Функция flag.Arg возвращает аргумент командной строки по указанному индексу.
В отличие от flag.Args, которая возвращает все не флаговые аргументы в виде слайса,
эта функция позволяет получить конкретный аргумент по его порядковому номеру.
Индексация начинается с нуля. Если аргумента с указанным индексом не существует,
функция возвращает пустую строку. Первым параметром функция принимает индекс аргумента.
Синтаксис
flag.Arg(index)
Пример
Давайте получим первый аргумент командной строки и выведем его на экран.
Запустим программу с командой go run main.go first second third:
package main
import (
"flag"
"fmt"
)
func main() {
flag.Parse()
arg := flag.Arg(0)
fmt.Printf("First argument: %s", arg)
}
Результат выполнения кода:
"First argument: first"
Пример
Давайте получим все аргументы по отдельности, используя flag.Arg.
Запустим программу с командой go run main.go a b c d e:
package main
import (
"flag"
"fmt"
)
func main() {
flag.Parse()
for i := 0; i < 5; i++ {
fmt.Printf("arg[%d]: %s\n", i, flag.Arg(i))
}
}
Результат выполнения кода:
"arg[0]: a"
"arg[1]: b"
"arg[2]: c"
"arg[3]: d"
"arg[4]: e"
Пример
Попробуем получить аргумент по несуществующему индексу.
Запустим программу с командой go run main.go hello:
package main
import (
"flag"
"fmt"
)
func main() {
flag.Parse()
arg := flag.Arg(10)
if arg == "" {
fmt.Println("Argument not found")
} else {
fmt.Printf("Found: %s", arg)
}
}
Результат выполнения кода:
"Argument not found"
Пример
Рассмотрим работу flag.Arg с флагами. При наличии объявленных флагов,
аргументы возвращаются только для не флаговых значений.
Запустим программу с командой go run main.go -name=John first second:
package main
import (
"flag"
"fmt"
)
func main() {
name := flag.String("name", "default", "user name")
flag.Parse()
fmt.Printf("Name: %s\n", *name)
fmt.Printf("Arg[0]: %s\n", flag.Arg(0))
fmt.Printf("Arg[1]: %s\n", flag.Arg(1))
}
Результат выполнения кода:
"Name: John"
"Arg[0]: first"
"Arg[1]: second"
Смотрите также
-
функцию
flag.Args,
которая возвращает все не флаговые аргументы в виде слайса -
функцию
flag.NArg,
которая возвращает количество не флаговых аргументов -
функцию
flag.Parse,
которая разбирает аргументы командной строки -
переменную
os.Args,
которая предоставляет доступ ко всем аргументам командной строки