如何通过输入一个标志来执行特定的功能,例如,我有三个标志:
wordPtr
numbPtr
forkPtr
并且在执行单个时,调用的函数被执行:
.\data -wordPtr Test
执行该标志时,仅执行 word 函数:
package main
import (
"flag"
"fmt"
)
var (
wordPtr string
numbPtr int
forkPtr bool
)
func main() {
flag.StringVar(&wordPtr, "word", "foo", "a string")
flag.IntVar(&numbPtr, "numb", 42, "an int")
flag.BoolVar(&forkPtr, "fork", false, "a bool")
flag.Parse()
if wordPtr != `` {
word(wordPtr)
}
if numbPtr != 0 {
numb(numbPtr)
}
if forkPtr {
fork(forkPtr)
}
}
func word(word string) {
fmt.Println("word:", word)
}
func numb(numb int) {
fmt.Println("numb:", numb)
}
func fork(fork bool) {
fmt.Println("fork:", fork)
}
但是,当我执行最后一个标志时,所有功能都被执行
PS C:\golang> .\logdata.exe -fork
word: foo
numb: 42
fork: true
PS C:\golang>
你知道为什么吗?