我正在用Gin框架构建一个大型Go web应用程序。对于请求用户信息的api之一,有一个输入类型为bitmap
的过滤器参数,表示用户是在线还是离线:
// SearchUsers API parameter: filterUser
// filterUser is a bitmap
Online: 1 << 0
Offline: 1 << 1
// Values:
0 -> not used
1 -> online
2 -> offline
3 -> all (online, offline)
现在我正在使用Request.URL.Query
解析所有API参数。我想知道这是否同样适用于位图类型?我是否需要创建一个[]byte
来处理输入,然后将其转换为DB查询的整数?
func (h *HandleManager) SearchUsers() gin.HandlerFunc {
return func(c *gin.Context) {
// ...
q := c.Request.URL.Query()
filterUsers := q.Get("filterUser")
if filterUsers != "" {
filterUsersByte := []byte(filterUsers)
}
q.Get()
返回string
值(可能,取决于客户端)您的位图的十进制表示形式。将其转换为[]byte
将为您提供字符串的UTF-8编码字节。这不是你想要的。
使用strconv.Atoi()
从字符串中解析数字,例如:
filterUsers := q.Get("filterUser")
bitmap, err := strconv.Atoi(filterUsers)
if err != nil {
// Handle error
}
// Use bitmap