1 Star 0 Fork 1

menuiis / gkit

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
coding.go 1009 Bytes
一键复制 编辑 原始数据 按行查看 历史
SongZhibin97 提交于 2021-12-07 10:50 . style: format code
package coding
import (
"errors"
"strings"
"sync"
)
// package encoding 各种格式编码解码
var ErrorTypeCode = errors.New("coding: code type error")
var registerCode = CodeStorage{storage: map[string]Code{}}
type (
// Code coding 接口
Code interface {
// Marshal 将v序列化为[]byte
Marshal(v interface{}) ([]byte, error)
// Unmarshal 将[]byte 反序列化为v
Unmarshal(data []byte, v interface{}) error
// Name 返回实际调用编码器的类型, 例如 json、xml、yaml、proto
Name() string
}
// CodeStorage 注册中心
CodeStorage struct {
storage map[string]Code
sync.Mutex
}
)
func RegisterCode(code Code) error {
if code == nil || len(code.Name()) == 0 {
return ErrorTypeCode
}
registerCode.Lock()
defer registerCode.Unlock()
registerCode.storage[strings.ToLower(code.Name())] = code
return nil
}
func GetCode(codeName string) Code {
registerCode.Lock()
defer registerCode.Unlock()
return registerCode.storage[strings.ToLower(codeName)]
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/menciis/gkit.git
git@gitee.com:menciis/gkit.git
menciis
gkit
gkit
4f74120a101e

搜索帮助

344bd9b3 5694891 D2dac590 5694891