QueryArray

在实际的业务开发中,我们有些业务多选的,比如一个活动有多个人参加,一个问题有多个答案等等,对于这类业务功能来说,如果是通过查询参数提交的,它们的URL大概这样?a=b&a=c&a=d,key值都一样,但是对应的value不一样。

这类URL查询参数,就是一个数组,那么在Gin中我们如何获取它们呢?

QueryMap

QueryMap其实就是把满足一定格式的URL查询参数,转换为一个map,假设有a,b,c三个人,他们对应的id是123,456,789.那么用map的方式表示,这种格式类似于:

?ids[a]=123&ids[b]=456&ids[c]=789

QueryMap 的原理

func (c *Context) QueryMap(key string) map[string]string {
	dicts, _ := c.GetQueryMap(key)
	return dicts
}

func (c *Context) GetQueryMap(key string) (map[string]string, bool) {
	c.getQueryCache()
	return c.get(c.queryCache, key)
}

QueryMap是通过GetQueryMap,最终都是c.get这个方法实现,我们只需要分析c.get就可以了。注意这里同样用到了getQueryCache进行缓存提高性能。 …

即刻独门秘籍 Golang Gin 实战(五)| 接收数组和 Map