Разбор командной строки флага в golang

Я не уверен, что понимаю смысл этого примера (взятый из здесь), а также то, что он пытается сообщить о Go язык:

package main

import (
    "flag"
    "fmt"
)

func main() {
    f := flag.NewFlagSet("flag", flag.ExitOnError)
    f.Bool("bool", false, "this is bool flag")
    f.Int("int", 0, "this is int flag")

    visitor := func(a *flag.Flag) {
        fmt.Println(">", a.Name, "value=", a.Value)
    }

    fmt.Println("Visit()")
    f.Visit(visitor)
    fmt.Println("VisitAll()")
    f.VisitAll(visitor)

    // set flags
    f.Parse([]string{"-bool", "-int", "100"})

    fmt.Println("Visit() after Parse()")
    f.Visit(visitor)
    fmt.Println("VisitAll() after Parse()")
    f.VisitAll(visitor)
}

Что-то в строках настройки, которые у них есть, но затем добавление

int_val := f.get("int")

чтобы получить названный аргумент, будет казаться более полезным. Я совершенно новичок в Go, поэтому просто хочу познакомиться с языком.

Ответы

Ответ 1

Это сложный пример использования пакета flag. Обычно флаги устанавливаются следующим образом:

package main

import "flag"

// note, that variables are pointers
var strFlag = flag.String("long-string", "", "Description")
var boolFlag = flag.Bool("bool", false, "Description of flag")

func init() {
    // example with short version for long flag
    flag.StringVar(strFlag, "s", "", "Description")
}

func main() {
    flag.Parse()
    println(*strFlag, *boolFlag)
}