gpt4 book ai didi

go - 如何修复m [0] == nil {},以便将其计入err

转载 作者:数据小太阳 更新时间:2023-10-29 03:36:00 25 4
gpt4 key购买 nike

我正在编写一个代码,并停留在m[0] == nil。如果代码包含{[]error{nil, err},则应返回err == 1 { return m[0].Error()}但是插入它会将nil计为err并返回for m[0] == nil{ return "0 errors"
另一个示例是{[]error{err, nil},应该返回m[0].Error(),而不是err==2
我添加了m== nil
(m[0] ==nil-否则我会感到恐慌:运行时错误:无效的内存地址或nil指针取消引用)

type Errors []error


func (m Errors) Error() string {

if m == nil{
return "(0 errors)"
}else if err := len(m); err == 0 {
return "(0 errors)"
}else if m[0]==nil{
return "(0 errors)"
}else if err == 1 {
return m[0].Error()
} else if err == 2 {
return m[0].Error() + " (and 1 other error)"
}else {
return fmt.Sprint(m[0].Error(), " (and 2 other errors)")
}
}

最佳答案

这段代码更具表现力。希望对您有所帮助。

至于m [0] == nil-如果它为nil,为什么要首先在 slice 中添加错误?

func (m Errors) Error() string {

count := 0

if m != nil {
count = len(m)
}

switch count {
case 0:
return "(0 errors)"
case 1:
return m[0].Error()
default:
return fmt.Sprint(m[0].Error(), " (and ", count, " other errors)")
}

}

关于go - 如何修复m [0] == nil {},以便将其计入err,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57952386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com