英文:
Get a Bitmap type filter queried from URL in Golang
问题
我正在处理一个使用Gin框架构建的大型Go Web应用程序。对于请求用户信息的其中一个API,有一个filter参数,其输入类型为bitmap
,表示用户是在线还是离线:
// SearchUsers API参数:filterUser
// filterUser是一个位图
在线:1 << 0
离线:1 << 1
// 值:
0 -> 未使用
1 -> 在线
2 -> 离线
3 -> 所有(在线,离线)
现在我正在使用Request.URL.Query
解析所有的API参数。我想知道对于位图类型,这个方法是否也适用?我需要创建一个[]byte
来处理输入,然后将其转换为整数以进行数据库查询吗?
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)
}
英文:
I'm working on a large Go web app built with Gin framework. For one of the APIs requesting user info, there is a filter parameter whose input type is bitmap
, denoting whether user is online or offline:
// 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)
Right now I'm parsing all the API parameters using Request.URL.Query
. I was wondering if this works the same for bitmap type as well? Do I need to create a []byte
to process the input and then convert it to integer for DB queries?
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)
}
答案1
得分: 1
q.Get()
返回一个 string
值,其中包含(可能取决于客户端)位图的十进制表示。将其转换为 []byte
将给你字符串的 UTF-8 编码字节。这不是你想要的。
使用 strconv.Atoi()
从字符串中解析数字,例如:
filterUsers := q.Get("filterUser")
bitmap, err := strconv.Atoi(filterUsers)
if err != nil {
// 处理错误
}
// 使用位图
英文:
q.Get()
returns a string
value holding (likely, depends on the client) the decimal representation of your bitmap. Converting it to []byte
will give you the UTF-8 encoded bytes of the string. This is not what you want.
Use strconv.Atoi()
to parse the number from the string, e.g.:
filterUsers := q.Get("filterUser")
bitmap, err := strconv.Atoi(filterUsers)
if err != nil {
// Handle error
}
// Use bitmap
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论