Go 언어flag_Go 의 명령 행 인자 / 명령 행 처리

13980 단어 Go 언어Golang
원문:http://studygolang.com/articles/2878
1. 명령 행 인자 (명령 행 인 자 는 프로그램 실행 인 자 를 지정 하 는 흔 한 방식 입 니 다. 예 를 들 어 go run hello. go, 프로그램 go 는 run 과 hello. go 두 개의 인 자 를 사 용 했 습 니 다.)
package main

import "os"
import "fmt"

func main() {
    //os.Args              。  ,                ,   os.Args[1:]          。
    argsWithProg := os.Args
    argsWithoutProg := os.Args[1:]
    //
    arg := os.Args[3]
    fmt.Println(argsWithProg)
    fmt.Println(argsWithoutProg)
    fmt.Println(arg)
}

/*
        ,      go build             

$ go build command-line-arguments.go
$ ./command-line-arguments a b c d
[./command-line-arguments a b c d]
[a b c d]
c
*/

2. 명령 행 표지 (표 시 된 명령 행 처리 방법 을 사용 합 니 다. 명령 행 표 지 는 명령 행 프로그램 이 지정 한 옵션 의 일반적인 방식 입 니 다. 예 를 들 어 wc - l 에서 이 - l 은 명령 행 표지 입 니 다.)
package main

//Go       flag  ,            。                    。
import "flag"
import "fmt"

func main() {
    //             、        。             "foo"        word          。    flag.String            (        ),                  。
    wordPtr := flag.String("word", "foo", "a string")
    //      word            numb   fork   。
    numbPtr := flag.Int("numb", 42, "an int")
    boolPtr := flag.Bool("fork", false, "a bool")
    //                     。                    。
    var svar string
    flag.StringVar(&svar, "svar", "bar", "a string var")
    //           ,   flag.Parse()         。
    flag.Parse()
    //                      。  ,         *wordPtr             ,          。
    fmt.Println("word:", *wordPtr)
    fmt.Println("numb:", *numbPtr)
    fmt.Println("fork:", *boolPtr)
    fmt.Println("svar:", svar)
    fmt.Println("tail:", flag.Args())
}

/*
       ,               ,         。
$ go build command-line-flags.go
word: opt
numb: 7
fork: true
svar: flag
tail: []
   ,         ,                   。
$ ./command-line-flags -word=opt
word: opt
numb: 42
fork: false
svar: bar
tail: []
               。
$ ./command-line-flags -word=opt a1 a2 a3
word: opt
...
tail: [a1 a2 a3]
  ,flag                 (  ,              )。
$ ./command-line-flags -word=opt a1 a2 a3 -numb=7
word: opt
numb: 42
fork: false
svar: bar
trailing: [a1 a2 a3 -numb=7]
   -h    --help                       。
$ ./command-line-flags -h
Usage of ./command-line-flags:
  -fork=false: a bool
  -numb=42: an int
  -svar="bar": a string var
  -word="foo": a string
            flag       ,           ,         。
$ ./command-line-flags -wat
flag provided but not defined: -wat
Usage of ./command-line-flags:
...
*/

1. 명령 행 인자 (명령 행 인 자 는 프로그램 실행 인 자 를 지정 하 는 흔 한 방식 입 니 다. 예 를 들 어 go run hello. go, 프로그램 go 는 run 과 hello. go 두 개의 인 자 를 사 용 했 습 니 다.)
package main

import "os"
import "fmt"

func main() {
    //os.Args              。  ,                ,   os.Args[1:]          。
    argsWithProg := os.Args
    argsWithoutProg := os.Args[1:]
    //
    arg := os.Args[3]
    fmt.Println(argsWithProg)
    fmt.Println(argsWithoutProg)
    fmt.Println(arg)
}

/*
        ,      go build             

$ go build command-line-arguments.go
$ ./command-line-arguments a b c d
[./command-line-arguments a b c d]
[a b c d]
c
*/

2. 명령 행 표지 (표 시 된 명령 행 처리 방법 을 사용 합 니 다. 명령 행 표 지 는 명령 행 프로그램 이 지정 한 옵션 의 일반적인 방식 입 니 다. 예 를 들 어 wc - l 에서 이 - l 은 명령 행 표지 입 니 다.)
package main

//Go       flag  ,            。                    。
import "flag"
import "fmt"

func main() {
    //             、        。             "foo"        word          。    flag.String            (        ),                  。
    wordPtr := flag.String("word", "foo", "a string")
    //      word            numb   fork   。
    numbPtr := flag.Int("numb", 42, "an int")
    boolPtr := flag.Bool("fork", false, "a bool")
    //                     。                    。
    var svar string
    flag.StringVar(&svar, "svar", "bar", "a string var")
    //           ,   flag.Parse()         。
    flag.Parse()
    //                      。  ,         *wordPtr             ,          。
    fmt.Println("word:", *wordPtr)
    fmt.Println("numb:", *numbPtr)
    fmt.Println("fork:", *boolPtr)
    fmt.Println("svar:", svar)
    fmt.Println("tail:", flag.Args())
}

/*
       ,               ,         。
$ go build command-line-flags.go
word: opt
numb: 7
fork: true
svar: flag
tail: []
   ,         ,                   。
$ ./command-line-flags -word=opt
word: opt
numb: 42
fork: false
svar: bar
tail: []
               。
$ ./command-line-flags -word=opt a1 a2 a3
word: opt
...
tail: [a1 a2 a3]
  ,flag                 (  ,              )。
$ ./command-line-flags -word=opt a1 a2 a3 -numb=7
word: opt
numb: 42
fork: false
svar: bar
trailing: [a1 a2 a3 -numb=7]
   -h    --help                       。
$ ./command-line-flags -h
Usage of ./command-line-flags:
  -fork=false: a bool
  -numb=42: an int
  -svar="bar": a string var
  -word="foo": a string
            flag       ,           ,         。
$ ./command-line-flags -wat
flag provided but not defined: -wat
Usage of ./command-line-flags:
...
*/

좋은 웹페이지 즐겨찾기