Files
bulma/flag/slice_value.go
T

43 lines
921 B
Go

package main
import (
"flag"
"fmt"
"strings"
)
// StringSlice 支持重复传参的字符串切片类型
type StringSlice []string
// Set 实现参数追加逻辑,覆盖原生覆盖问题
func (s *StringSlice) Set(value string) error {
*s = append(*s, value)
return nil
}
// String 实现字符串展示与零值返回
func (s *StringSlice) String() string {
if len(*s) == 0 {
return "[]"
}
return strings.Join(*s, ",")
}
// Get 实现Getter接口,返回原始切片类型
func (s *StringSlice) Get() any {
return []string(*s)
}
func main() {
var files StringSlice
var tags StringSlice
flag.Var(&files, "file", "指定配置文件,可重复传参")
flag.Var(&tags, "tag", "自定义业务标签,可重复传参")
flag.Parse()
fmt.Printf("文件列表:%v (原始类型:%T)\n", files.Get(), files.Get())
fmt.Printf("标签列表:%v (原始类型:%T)\n", tags.Get(), tags.Get())
}