Beego-Go语言在开发过程遇到一些小问题汇总

lock-li · · 2336 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在开发过程中经常会遇见一些问题,现把汇总和解决方法记录一下。

1、session设置的问题

在设置session的时候,有整型,有字符串类型,在连接的时候要用到:

fmt.Sprintf() + 连接字符串,不格式一下,直接拼接会报错

this.SetSession("userLogin", fmt.Sprintf("%d", users.Id)+"||"+users.Username+"||"+users.Avatar)

2、session获取问题

在设置好session后,获取的是通过

this.GetSession("userLogin")

如果userLogin的值是整型的话,不会报错;如果按上面的(第一条),整型与字符串拼接,会报错

可以采用:

this.GetSession("userLogin").(string)

.(string)有多种类型,如果获取session报错的时候,根据自己的实际情况换成.(int)等

3、长整型转换问题

数字长整型字符串转换成长整型,可以先转换成整型,再转成长整型

如:

userid, _ := strconv.Atoi(tmp[0])
longid := int64(userid)

4、长整型数字返回给前端JS,数值溢出问题

在提交或其它操作的时候,经常会返回json格式的给前端,对于长整型的数字,js处理会溢出

在返回的长整型值必须fmt.Sprintf("%d",id)格式化处理一下,这样前端JS就不用处理~

this.Data["json"] = map[string]interface{}{"code": 1, "message": "项目信息添加成功", "id": fmt.Sprintf("%d", id)}

5、字符串分割成map

在项目中经常会处理一些如“lock,tom,jerry,李白”,现在想把转换成map:

names := strings.Split("6565243443941654055,4365243443941654055,1454243443941654055,1465243443941654034", ",")
var namesmap = make(map[int]int64)
for i, v := range ccids {
   names, _ := strconv.Atoi(v)
   namesmap[i] = int64(names)
}
fmt.Println(namesmap)

6、多条件传递参数,查询

在model里经常会写一些通用的方法,会根据不同的条件进行SQL搜索

condArr := make(map[string]string)
condArr["projectid"] = idstr
condArr["status"] = status
condArr["type"] = stype

在方法中传递condArr就可以了,方法的定义可能是这样

func ListProjectTask(condArr map[string]string, page int, offset int) (num int64, err error, ops []ProjectsTask) {

}

7、Beego分页

要引用:

"github.com/astaxie/beego/utils/pagination"

具体如下:

countTask := CountTask(condArr)
paginator := pagination.SetPaginator(this.Ctx, offset, countTask)
_, _, tasks := ListProjectTask(condArr, page, offset)
this.Data["tasks"] = tasks
this.Data["paginator"] = paginator

 

目前先汇总一些基本的问题,后面如果遇见,继续追加~


有疑问加站长微信联系(非本文作者)

本文来自:开源中国博客

感谢作者:lock-li

查看原文:Beego-Go语言在开发过程遇到一些小问题汇总

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2336 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传