@aassdds
Люблю борщ и PHP

Как в GOlang передать именные параметры с командной строки?

Добрый день
Изучаю GO
столкнулся с проблемой того что не могу передать переметры вместе с ключами
То есть - они то передаются, но как их получить именно по названию ключа - не получается
Пример:
my_prog.exe a=2 dump="hello"

ну а в проге хотелось бы работать с args["a"] и значение получить 2

argsWithProg := os.Args
log.Print("argsWithProg = ", argsWithProg)
log.Print("argsWithProg = ", argsWithProg[1]["dump"])

Падает с ошибкой non-integer string index "dump"
помогите разобраться
  • Вопрос задан
  • 3076 просмотров
Решения вопроса 1
Для этого есть пакет flag
Умеет и значения по-умолчанию и генерировать usage.

В вашем случае это будет вот так:
package main

import (
	"flag"
	"fmt"
)

func main() {
	var a int
	var dump string

	flag.IntVar(&a, "a", 0, "The integer param")
	flag.StringVar(&dump, "dump", "default_dump", "The name of a dump")

	flag.Parse()

	fmt.Println("a:", a)
	fmt.Println("dump:", dump)
}


$ go run main.go -a=2 -dump="hello"
a: 2
dump: hello
$ go run main.go
a: 0
dump: default_dump
$ go run main.go -a=sdf
invalid value "sdf" for flag -a: strconv.ParseInt: parsing "sdf": invalid syntax
Usage of /tmp/go-build682528613/command-line-arguments/_obj/exe/main:
  -a int
        The integer param
  -dump string
        The name of a dump (default "default_dump")
exit status 2
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@RidgeA
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы