Go 언어flag_Go 의 명령 행 인자 / 명령 행 처리
13980 단어 Go 언어Golang
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:
...
*/