package main import ( "fmt" "strings" ) type MapVar map[string]string type SliceVar []string func (this *MapVar) Set(value string) error { if *this == nil { *this = make(map[string]string) } splits := strings.SplitN(value, "=", 2) (*this)[splits[0]] = splits[1] return nil } func (this *MapVar) String() string { slice := []string{} for key, value := range *this { slice = append(slice, fmt.Sprintf("%s: %v,", key, value)) } return fmt.Sprintf("{%s}", strings.Join(slice, ",")) } func (this *SliceVar) Set(value string) error { *this = append(*this, value) return nil } func (this *SliceVar) String() string { return fmt.Sprintf("[%s]", strings.Join(*this, ",")) }