Suche…


Kommandozeilenargumente

Das Analysieren von Befehlszeilenargumenten ist Go ist anderen Sprachen sehr ähnlich. In Ihrem Code greifen Sie einfach auf die Argumente zu, wobei das erste Argument der Name des Programms selbst ist.

Schnelles Beispiel:

package main

import (
    "fmt"
    "os"
)

func main() {

    progName := os.Args[0]
    arguments := os.Args[1:]

    fmt.Printf("Here we have program '%s' launched with following flags: ", progName)

    for _, arg := range arguments {
        fmt.Printf("%s ", arg)
    }

    fmt.Println("")
}

Und Ausgabe wäre:

$ ./cmd test_arg1 test_arg2
Here we have program './cmd' launched with following flags: test_arg1 test_arg2

Jedes Argument ist nur eine Zeichenfolge. Im os Paket sieht das so aus: var Args []string

Flaggen

Go - Standardbibliothek bietet Paket - flag , die mit Parsing - Flags übergeben Programm hilft.

Beachten Sie, dass das flag Paket keine üblichen Flags im GNU-Stil enthält. Das bedeutet , dass mehrbuchstabigen Fahnen müssen mit Bindestrich wie diese gestartet werden: -exampleflag , das nicht: --exampleflag . Flaggen im GNU-Stil können mit einem Drittanbieter-Paket erstellt werden.

package main

import (
    "flag"
    "fmt"
)

func main() {

    // basic flag can be defined like this:
    stringFlag := flag.String("string.flag", "default value", "here comes usage")
    // after that stringFlag variable will become a pointer to flag value

    // if you need to store value in variable, not pointer, than you can
    // do it like:
    var intFlag int
    flag.IntVar(&intFlag, "int.flag", 1, "usage of intFlag")

    // after all flag definitions you must call
    flag.Parse()

    // then we can access our values
    fmt.Printf("Value of stringFlag is: %s\n", *stringFlag)
    fmt.Printf("Value of intFlag is: %d\n", intFlag)

}

flag hilft uns Nachricht:

$ ./flags -h
Usage of ./flags:
  -int.flag int
        usage of intFlag (default 1)
  -string.flag string
        here comes usage (default "default value")

Mit allen Flaggen anrufen:

$ ./flags -string.flag test -int.flag 24
Value of stringFlag is: test
Value of intFlag is: 24

Anruf mit fehlenden Flags:

$ ./flags
Value of stringFlag is: default value
Value of intFlag is: 1


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow