開発環境
- macOS High Sierra - Apple (OS)
- Emacs (Text Editor)
- Go (プログラミング言語)
- Introducing Go: Build Reliable, Scalable Programs Caleb Doxsey (著) (参考書籍)
Head First C ―頭とからだで覚えるCの基本 (David Griffiths (著)、Dawn Griffiths (著)、中田 秀基 (監修)、木下 哲也 (翻訳)、オライリージャパン)の3章(小さなツールの作成 - 1つのことだけをうまくやる)、ピザの一切れ(p. 150)をGoで取り組んでみる。
ピザの一切れ(p. 150)
コード(Emacs)
package main
import (
"flag"
"fmt"
)
func main() {
deliveryPtr := flag.String("d", "", "delivery")
thickPtr := flag.Bool("t", false, "thick")
flag.Parse()
if *thickPtr {
fmt.Println("thick crust.")
}
if *deliveryPtr != "" {
fmt.Printf("To be delivered %s.\n", *deliveryPtr)
}
fmt.Println("Ingredients:")
for _, ingredient := range flag.Args() {
fmt.Println(ingredient)
}
}
入出力結果(Terminal)
$ go run sample6.go -d
flag needs an argument: -d
Usage of /var/folders/jg/y5d0zx4n1c9644tjrmn90jpc0000gn/T/go-build460691906/b001/exe/sample6:
-d string
delivery
-t thick
exit status 2
$ go run sample6.go -d a
To be delivered a.
Ingredients:
$ go run sample6.go -t
thick crust.
Ingredients:
$ go run sample6.go i1
Ingredients:
i1
$ go run sample6.go i1 i2
Ingredients:
i1
i2
$ go run sample6.go -d a i1
To be delivered a.
Ingredients:
i1
$ go run sample6.go -t a i1
thick crust.
Ingredients:
a
i1
$ go run sample6.go -t -d a i1 i2
thick crust.
To be delivered a.
Ingredients:
i1
i2
$ go run sample6.go -td a i1 i2
flag provided but not defined: -td
Usage of /var/folders/jg/y5d0zx4n1c9644tjrmn90jpc0000gn/T/go-build541714292/b001/exe/sample6:
-d string
delivery
-t thick
exit status 2
$ go run sample6.go -dt a i1 i2
flag provided but not defined: -dt
Usage of /var/folders/jg/y5d0zx4n1c9644tjrmn90jpc0000gn/T/go-build147549695/b001/exe/sample6:
-d string
delivery
-t thick
exit status 2
$ go run sample6.go -d a -t i1 i2
thick crust.
To be delivered a.
Ingredients:
i1
i2
$ go run sample6.go -t a -d i1 i2
thick crust.
Ingredients:
a
-d
i1
i2
$
C言語のgetopt関数とGoのflagパッケージでのコマンドライン引数の取り扱いはちょっと違いがあるみたい。
0 コメント:
コメントを投稿