目录
一 、map[string]any参数转为map[string]string
二 、go 请求参数绑定 gin框架示例
三、 go 中实现接口
四 、go中设计模式策略模式实现
一 、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.Requestc.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
}