Переменная os.Args

Переменная os.Args представляет собой срез строк ([]string), содержащий аргументы командной строки, с которыми была запущена программа. Первый элемент этого среза (os.Args[0]) — это имя запущенной программы. Все последующие элементы — это аргументы, переданные программе через пробел. Если аргументы не переданы, срез содержит только один элемент — имя программы. Переменная доступна без импорта дополнительных пакетов, так как находится в пакете os.

Синтаксис

goos.Args // []string

Пример

Получим имя программы и все переданные аргументы:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  fmt.Println("Program name:", os.Args[0])
  fmt.Println("All arguments:", os.Args[1:])
}

Результат выполнения кода при запуске программы с аргументами arg1 arg2 arg3:

go"Program name: ./myprogram"
"All arguments: [arg1 arg2 arg3]"

Пример

Проверим, переданы ли аргументы, и выведем их количество:

gopackage 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)
    }
  }
}

Результат выполнения кода без аргументов:

go"No arguments provided"

Результат выполнения кода с аргументами first second third:

go"Number of arguments: 3"
"Arg 1: first"
"Arg 2: second"
"Arg 3: third"

Пример

Используем аргументы для настройки поведения программы, например, для выбора режима работы:

gopackage 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:

go"Running in fast mode"

Результат выполнения кода с аргументом slow:

go"Running in slow mode"

Результат выполнения кода с аргументом unknown:

go"Unknown mode: unknown"

Смотрите также

  • пакет flag.Parse,
    который предоставляет более удобный способ разбора аргументов
  • функцию flag.Args,
    которая возвращает необработанные аргументы после флагов
  • функцию flag.Arg,
    которая возвращает аргумент по индексу
  • функцию flag.NArg,
    которая возвращает количество необработанных аргументов