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

我有以下代码按整数值对整数字符串切片进行排序。如果错误不是零,那么在 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

        })

}


隔江千里
浏览 99回答 1
1回答

喵喵时光机

您可能希望传递该数组一次以转换为整数,而不是调用时间:Atoin^2ints:=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上面的代码将捕获第一个检测到的错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go