package cmdn import ( "errors" "fmt" "git.noahlan.cn/noahlan/ntool/ndef" "runtime" "strings" ) type PlainSerializer struct { sysType string } func NewPlainSerializer() ndef.Serializer { return &PlainSerializer{ sysType: runtime.GOOS, } } func (s *PlainSerializer) Marshal(v any) ([]byte, error) { ret, ok := v.(*PlainCommand) if !ok { return nil, errors.New(fmt.Sprintf("参数类型必须为 %T", PlainCommand{})) } // ret arg0 arg1 arg2 ... // cmd arg0 arg1 arg2 ... sb := strings.Builder{} if ret.ID != "" { sb.WriteString(ret.ID) sb.WriteString(" ") } sb.WriteString(ret.Cmd) sb.WriteString(" ") sb.WriteString(strings.Join(ret.Args, " ")) return []byte(sb.String()), nil } func (s *PlainSerializer) Unmarshal(data []byte, v any) error { t, ok := v.(*PlainResp) if !ok { return errors.New(fmt.Sprintf("参数类型必须为 %T", PlainResp{})) } t.ID = "" //t.Command t.Result = string(data) return nil }