目录
一 、map[string]any参数转为map[string]string
一 、map[string]any参数转为map[string]string
场景:在go中有将map[string]any参数转为map[string]string
其中any源码进去的话是一个interface{}数据类型,类似java的Object?
正常情况下不像java有String.valueOf 万能转法,这里使用到fmt包下的方法,具体方法
func MMPToString(mmp map[string]any) map[string]string {
mpp := make(map[string]string, len(mmp))
for k, v := range mmp {
mpp[k] = fmt.Sprintf("%v", v)
}
return mpp
}
二 、go 请求参数绑定 gin框架示例
绑定对象即可(java中对象创建用new 这里直接变量声明就是创建对象)
func GetServiceConfigList(c *gin.Context) {
var request model.Request
c.Bind(&request)
fmt.Println(xutils.JSONToString(request))
}
utils包下的方法
func JSONToString(value any) string {
b, _ := json.Marshal(value)
return string(b)
}
// 传递指针类型数据
func JSONtoObject(value string, obj any) error {
err := json.Unmarshal([]byte(value), obj)
return err
}
三、 go 中实现接口
go中的方法实现不像java, go中实现方法,没有implements关键字,只能把接口中的方法都实现
//接口定义
type ICheckService interface {
Check() bool
}
//定义实现类并实现接口方法,完成
type EmptyCheckService struct {
}
func (service *EmptyCheckService) Check() bool {
fmt.Println("EmptyCheckService......")
return false
}
四 、go中设计模式策略模式实现
//定义全局变量
var CheckServiceMap = map[string]ICheckService{
CheckServiceMap["emptyCheckService"] = &EmptyCheckService{}
// 其他实现
}
//方法中调用
CheckServiceMap["emptyCheckService"].Check()
//接口定义
type ICheckService interface {
Check() bool
}
//定义实现类并实现接口方法,完成
type EmptyCheckService struct {
}
func (service *EmptyCheckService) Check() bool {
fmt.Println("EmptyCheckService......")
return false
}