在 Go 中將值列表放入 Flag 中
在 Go 中,flag 套件支援解析命令列參數。然而,它最初只提供有限範圍的資料類型(String、Int、Bool)。為了適應更複雜的數據,您可以定義自己的標誌類型並使用 flag.Var() 來綁定它。
列表的自訂標誌類型
考慮一個標誌接受多個值作為列表。首先,定義自訂標誌類型:
type arrayFlags []string // String is an implementation of the flag.Value interface func (i *arrayFlags) String() string { return fmt.Sprintf("%v", *i) } // Set is an implementation of the flag.Value interface func (i *arrayFlags) Set(value string) error { *i = append(*i, value) return nil }
使用自訂標誌
接下來,聲明此類型的變數以與自訂標誌綁定:
var myFlags arrayFlags
註冊自訂Flag
最後,您可以使用flag 套件註冊您的自訂標誌:
flag.Var(&myFlags, "list1", "Some description for this param.")
現在,您可以在執行程式時會向此標誌傳遞多個值:
go run your_file.go --list1 value1 --list1 value2
更新的程式碼片段
供參考,請參考此處完整的程式碼片段:
package main import ( "flag" "fmt" ) type arrayFlags []string // String is an implementation of the flag.Value interface func (i *arrayFlags) String() string { return fmt.Sprintf("%v", *i) } // Set is an implementation of the flag.Value interface func (i *arrayFlags) Set(value string) error { *i = append(*i, value) return nil } var myFlags arrayFlags func main() { flag.Var(&myFlags, "list1", "Some description for this param.") flag.Parse() }
以上是如何在 Go 中為值列表定義自訂標誌類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!