go语言这个语句表示什么意思?

下面是一个查询users列表的函数:

func ListUser(username string, offset, limit int) ([]*UserModel, uint64, error) {
    if limit == 0 {
        limit = constvar.DefaultLimit
    }

    users := make([]*UserModel, 0)
    var count uint64

    where := fmt.Sprintf("username like '%%%s%%'", username)  //这个语句的作用是什么?
    if err := DB.Self.Model(&UserModel{}).Where(where).Count(&count).Error; err != nil {
        return users, count, err
    }

    if err := DB.Self.Where(where).Offset(offset).Limit(limit).Order("id desc").Find(&users).Error; err != nil {
        return users, count, err
    }

    return users, count, nil
}

问题:
上面代码中where := fmt.Sprintf("username like '%%%s%%'", username)这个语句的作用是什么?

阅读 3.3k
2 个回答

fmt.Sprintf是格式化字符串并赋值给左边的where
其中两个%%fmt语法的问题,在fmt%%输出的结果是%,所以这个语句可以认为等于
where:= "username like %"+username+"%"

新手上路,请多包涵

这不就是个数据库查询语句吗,去看看sql语句like的用法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题