前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >行人检测功能分割数组报错panic: runtime error,如何解决?

行人检测功能分割数组报错panic: runtime error,如何解决?

原创
作者头像
TSINGSEE青犀视频
修改2021-10-22 10:49:46
5450
修改2021-10-22 10:49:46
举报
文章被收录于专栏:TSINGSEE青犀视频

我们开发的行人检测功能仍在园区测试中,目前正在进行进行人数的编译,简单说就是一个分析总客流的功能。我们主要的实现方式是先通过python程序将每天的时间段(毫秒级)的行人制作一个数据库,人数和人数ID都保存到数据库。已被分析,如找出0人的时间段和在0人之间的总人数。

在分割0人时,出现超出数组的范围。

错误日志:“panic: runtime error: index out of range [-1] Goroutine 115 [running]: Gitee.com/xxxxx”

先找到对应的错误信息点,再使用调试工具进行调试。从上面的图中我们可以看到一个函数:“FindDatabasePersons”:

此函数就是从历史的数据库查找符合条件的人数用于替换,进到此函数里面有个“DoSplitZeroPerson”函数,主要错误在此处。

代码语言:javascript
复制
yMd := fmt.Sprintf("%d_%02d_%02d", y, m, d)
if !IsTSnap(yMd, sh, eh) { //首先查找数据库,把数据保存,下次就不用在查找数据库,节省时间
   if IsTable(yMd) {
      base := QuerySqlTableToWhere(yMd, sql)
      newBase := DoSplitZeroPerson(base, 2 * 1000)
      for i:=0;i<len(newBase)-1;i++ {
         sql.StartTimestamp = newBase[i].Timestamp
         sql.EndTimestamp = newBase[i+1].Timestamp

主要问题是最后的if判断,是有问题的。

所以问题最后一个if判断中,将newBase这个数组里面的长度减去1,如果newBase数组没有值是一个空的数组,那么减去1,此数组就会取下标为负数。取负数下标是有问题的,所以上面的报错是有个”[-1]”。要修改也很简单,在加个if判断即可:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档