首頁 > 後端開發 > Golang > 錯誤。如果包含切片,則傳回 false

錯誤。如果包含切片,則傳回 false

王林
發布: 2024-02-12 16:36:05
轉載
835 人瀏覽過

错误。如果包含切片,则返回 false

問題內容

當我有一個包含嵌套在其中的切片的錯誤結構時,Error.Is 似乎無法正常工作:

package main

import (
    "errors"
    "fmt"
    "os"
)

type Response struct {
    Details []string
}

type ErrResponseError struct {
    Response Response
}

func (err ErrResponseError) Error() string {
    return "response error"
}

func main() {
    err := ErrResponseError{}
    fmt.Fprintf(os.Stdout, "equal: %v", errors.Is(err, ErrResponseError{}))
}
登入後複製

返回


equal: false
登入後複製
package main

import (
    "errors"
    "fmt"
    "os"
)

type Response struct {
    Details string // Changed this line
}

type ErrResponseError struct {
    Response Response
}

func (err ErrResponseError) Error() string {
    return "response error"
}

func main() {
    err := ErrResponseError{}
    fmt.Fprintf(os.Stdout, "equal: %v", errors.Is(err, ErrResponseError{}))
}
登入後複製

返回


equal: true
登入後複製

............................................... .... ........................................... ........... .................................... ................................................ ................................................................ ....

解決方法

來自文件:

因此,您可以透過編寫 Is 方法來比較兩個切片來完成此操作。

預設的誤差比較演算法檢查誤差是否等於目標。由於您的錯誤包含一個切片,因此它不具有可比性。

以上是錯誤。如果包含切片,則傳回 false的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板