上一篇我们介绍了TSINGSEE青犀视频行人智能检测功能在景区项目中的测试,在景区项目系统中,替换本地文件出现报错,错误信息:“panic: runtime error: index out of range [1] with length 1”,此错误意思是程序运行超出索引的范围,会导致程序崩溃。
先看下代码:
var allFile = ""
for _, dirfile := range dirfiles {
fname := dirfile.Name()
n := strings.Split(fname, "_")[1]
allFile += fmt.Sprintf("%s/%s;", dir, n)
}
allFile = allFile[:len(allFile) -1]
nameSplit := strings.Split(arr[index].Filename, ";")
log.Println("文件有多个需要替换:" + arr[index].Filename)
DoLocalFile(0, nameSplit, func() {
index+=1
DoValueToReplaceSource(arr, index, cb)
})
return
上面的代码是把所有文件夹下的视频文件进行拼接,并使用分号(“;”)为分割符。但是该代码会出现一个错误:引用一个为nil的切片,即下标为0的元素,这个错误会造成代码中出现index out of range错误,这样就会触发panic,使程序不能正常的运行。
这里使用的是分号(“;”)分割,所以只要进行一次的判断,把分号分割出来的字符需要大于1才行,若果是小于等于1的话就会出错。代码修改如下:
nameSplit := strings.Split(arr[index].Filename, ";")
if len(nameSplit) > 1 {
log.Println("文件有多个需要替换:" + arr[index].Filename)
DoLocalFile(0, nameSplit, func() {
index+=1
DoValueToReplaceSource(arr, index, cb)
})
return
} else {
if IsExists(arr[index].Filename) {
ChangeFile(arr[index].Filename)
} else {
log.Println("没有此文件路径")
}
}
修改后该报错即可解决。TSINGSEE青犀视频仍将不断拓展视频直播系统的功能和优势,一方面,通过AI智能分析实现了智能判断,另一方面,通过物联网、大数据等技术获得最鲜活的数据信息,并进行精准的计算,欢迎大家了解或测试。