Переменная os.Args
Переменная os.Args представляет собой срез строк ([]string),
содержащий аргументы командной строки, с которыми была запущена программа.
Первый элемент этого среза (os.Args[0]) — это имя запущенной программы.
Все последующие элементы — это аргументы, переданные программе через пробел.
Если аргументы не переданы, срез содержит только один элемент — имя программы.
Переменная доступна без импорта дополнительных пакетов, так как находится в пакете os.
Синтаксис
os.Args // []string
Пример
Получим имя программы и все переданные аргументы:
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("Program name:", os.Args[0])
fmt.Println("All arguments:", os.Args[1:])
}
Результат выполнения кода при запуске программы с аргументами arg1 arg2 arg3:
"Program name: ./myprogram"
"All arguments: [arg1 arg2 arg3]"
Пример
Проверим, переданы ли аргументы, и выведем их количество:
package main
import (
"fmt"
"os"
)
func main() {
if len(os.Args) == 1 {
fmt.Println("No arguments provided")
} else {
fmt.Printf("Number of arguments: %d\n", len(os.Args)-1)
for i, arg := range os.Args[1:] {
fmt.Printf("Arg %d: %s\n", i+1, arg)
}
}
}
Результат выполнения кода без аргументов:
"No arguments provided"
Результат выполнения кода с аргументами first second third:
"Number of arguments: 3"
"Arg 1: first"
"Arg 2: second"
"Arg 3: third"
Пример
Используем аргументы для настройки поведения программы, например, для выбора режима работы:
package main
import (
"fmt"
"os"
)
func main() {
if len(os.Args) < 2 {
fmt.Println("Usage: program [mode]")
return
}
mode := os.Args[1]
switch mode {
case "fast":
fmt.Println("Running in fast mode")
case "slow":
fmt.Println("Running in slow mode")
default:
fmt.Printf("Unknown mode: %s\n", mode)
}
}
Результат выполнения кода с аргументом fast:
"Running in fast mode"
Результат выполнения кода с аргументом slow:
"Running in slow mode"
Результат выполнения кода с аргументом unknown:
"Unknown mode: unknown"
Смотрите также
-
пакет
flag.Parse,
который предоставляет более удобный способ разбора аргументов -
функцию
flag.Args,
которая возвращает необработанные аргументы после флагов -
функцию
flag.Arg,
которая возвращает аргумент по индексу -
функцию
flag.NArg,
которая возвращает количество необработанных аргументов