func Encode(cmd, dbId uint8, seq uint64, v interface{}) ([]byte, error) { jsonPkg, err := json.Marshal(v) if err != nil { return nil, err } var pkgLen = proto.HeadSize + len(jsonPkg) var head proto.PkgHead head.Cmd = cmd head.DbId = dbId head.Seq = seq head.PkgLen = uint32(pkgLen) var pkg = make([]byte, pkgLen) _, err = head.Encode(pkg) if err != nil { return nil, err } copy(pkg[proto.HeadSize:], jsonPkg) return pkg, nil }