为了账号安全,请及时绑定邮箱和手机立即绑定

排序比较器函数中的错误处理

排序比较器函数中的错误处理

Go
隔江千里 2022-09-19 10:46:02
我有以下代码按整数值对整数字符串切片进行排序。如果错误不是零,那么在 sortSlice 函数中返回 err1 和 err2 错误的方法是什么?排序函数使用比较器的返回,因此我不确定如何返回错误。func (o *Object) sortSlice() error {        sort.Slice(mySlice, func(i, j int) bool {             numA, err1 := strconv.Atoi(mySlice[i])             numB, err2 := strconv.Atoi(mySlice[j])             return numA > numB        })}
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

您可能希望传递该数组一次以转换为整数,而不是调用时间:Atoin^2


ints:=make([]int,0,len(mySlice)

for _,x:=range mySlice {

   v, err:=strconv.Atoi(x)

   if err!=nil {

     return err

   }

   ints=append(ints,v)

}

sort.Slice(mySlice,func(i,j int) bool {return ints[i]>ints[j]})

但是,在一般情况下,您可能需要在外部作用域中设置一个错误:


 var err error

 sort.Slice(mySlice, func(i, j int) bool {

             numA, err1 := strconv.Atoi(mySlice[i])

             if err1!=nil && err==nil {

               err=err1

             }

             numB, err2 := strconv.Atoi(mySlice[j])

             if err2!=nil && err==nil {

               err=err2

             }

             return numA > numB

        })

  return err

上面的代码将捕获第一个检测到的错误。


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号