Go语言自学系列 | golang标准库errors

Posted COCOgsta

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言自学系列 | golang标准库errors相关的知识,希望对你有一定的参考价值。

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客_自学go语言


errors包实现了操作错误的函数。语言使用error类型来返回函数执行过程中遇到的错误,如果返回的error值为nil,则表示未遇到错误,否则error会返回一个字符串,用于说明遇到了什么错误。

error结构

type error interface 
    Error() string

你可以用任何类型去实现它(只要添加一个Error()方法即可),也就是说,error可以是任何类型,这意味着,函数返回的error值实际可以包含任意信息,不一定是字符串。

error不一定表示一个错误,它可以表示任何信息,比如io包中就用error类型的io.EOF表示数据读取结束,而不是遇到了什么错误。

errors包实现了一个最简单的error类型,只包含一个字符串,它可以记录大多数情况下遇到的错误信息。errors包的用法也很简单,只有一个New函数,用于生成一个最简单的error对象:

func New(text string) error
package main

import (
    "errors"
    "fmt"
)

func check(s string) (string, error) 
    if s == "" 
        err := errors.New("字符串不能为空")
        return "", err
     else 
        return s, nil
    


func main() 
    s, err := check("hello")
    if err != nil 
        fmt.Printf("err: %v\\n", err.Error())
     else 
        fmt.Printf("s: %v\\n", s)
    

运行结果

[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
s: hello

自定义错误

package main

import (
    "fmt"
    "time"
)

// MyError is an error implementation that include a time and message.
type MyError struct 
    When time.Time
    What string


func (e MyError) Error() string 
    return fmt.Sprintf("%v: %v", e.When, e.What)


func oops() error 
    return MyError
        time.Date(1989, 3, 15, 22, 30, 0, 0, time.UTC),
        "the file system has gone away",
    


func main() 
    if err := oops(); err != nil 
        fmt.Println(err)
    

运行结果

[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
1989-03-15 22:30:00 +0000 UTC: the file system has gone away

以上是关于Go语言自学系列 | golang标准库errors的主要内容,如果未能解决你的问题,请参考以下文章

Go语言自学系列 | golang标准库builtin

Go语言自学系列 | golang标准库bufio

Go语言自学系列 | golang标准库io包

Go语言自学系列 | golang标准库encoding/xml

Go语言自学系列 | golang标准库中的sort包

Go语言自学系列 | golang标准库ioutil包