go map[string]any 转map[string]string

目录

一 、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.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
}

猜你喜欢

转载自blog.csdn.net/haohaounique/article/details/131814235