使用 Go 建立 CLI 指令

做法

新增 main.go 檔:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package main

import (
"flag"
"fmt"
"log"
"os"
)

var (
config Config
)

type Config struct {
File string
OutputDir string
}

func init() {
flag.Usage = usage
flag.StringVar(&config.File, "f", "example.txt", "source file")
flag.StringVar(&config.OutputDir, "o", "dist", "output directory")
flag.Parse()
}

func main() {
fmt.Printf("File: %s\n", config.File)
fmt.Printf("OutputDir: %s\n", config.OutputDir)
}

func usage() {
if _, err := fmt.Fprintln(os.Stderr, "Usage: example [flags]"); err != nil {
log.Fatal(err)
}
flag.PrintDefaults()
}

執行編譯。

1
go build

使用

使用 -h-help 參數查看使用說明。

1
2
3
4
5
6
./go-cli-example -h
Usage: example [flags]
-f string
source file (default "example.txt")
-o string
output directory (default "dist")

使用 -f-o 參數指定使用檔案和輸出路徑。

1
2
3
./go-cli-example -f hello.txt -o output
File: hello.txt
OutputDir: output

程式碼