cpp

Получение данных из командной строки

Передать данные можно в командной строке после названия файла. Получить эти данные позволяет переменная Args из пакета os. Объявление переменной:

var Args []string

Как видно из объявления, переменная Args содержит слайс строк. Что такое слайс? Можно сказать, что это динамический массив, т. е. массив, который может изменять свой размер во время выполнения программы. Первый элемент слайса будет содержать название запускаемой программы, а остальные элементы будут содержать данные, переданные в командной строке. Рассмотрим получение данных из командной строки на примере (листинг 1.6).

Листинг 1.6. Получение данных из командной строки

package main

import (
   "fmt"
   "os"
)

func main() {
   fmt.Println("len(os.Args) =", len(os.Args))
   fmt.Println(os.Args[0])
   for _, data := range os.Args {
      fmt.Println(data)
   }
}

Запускаем командную строку, компилируем и запускаем программу:

C:\book\test>go run main.go
len(os.Args) = 1
C:\Users\Unicross\AppData\Local\Temp\go-build444590149\b001\exe\main.exe
C:\Users\Unicross\AppData\Local\Temp\go-build444590149\b001\exe\main.exe

C:\book\test>go build main.go

C:\book\test>main.exe -param1 -param2
len(os.Args) = 3
main.exe
main.exe
-param1
-param2

В последней команде мы передаем программе main.exe некоторые данные (-param1 -param2). Эти данные доступны через второй и третий элементы слайса Args. Первый элемент слайса (Args[0]) содержит только название файла. Так будет не всегда. Если в командной строке запуск производится следующим образом:

C:\book\test>C:\book\test\main.exe -param1 -param2

то элемент будет содержать не только название файла, но и путь к нему:

C:\book\test>C:\book\test\main.exe -param1 -param2
len(os.Args) = 3
C:\book\test\main.exe
C:\book\test\main.exe
-param1
-param2

Если нужно передать значение, которое содержит пробел, то это значение нужно указывать внутри кавычек:

C:\book\test>main.exe x + y "x + y"
len(os.Args) = 5
main.exe
main.exe
x
+
y
x + y

В первом случае мы получили каждый символ по отдельности, а во втором — все символы вместе, указав значение внутри кавычек.

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp