func NewError(code int64, msg string) MyError { return MyError{ code: code, msg: msg, } } // 实现error接口的Error方法 func (e MyError) Error() string { return fmt.Sprintf("Error: [%d] %s", e.code, e.msg) } func (e MyError) GetCode() int64 { return e.code } func (e ...
在Go语言中,当函数执行到代码块最后一行}之前或者return语句的时候会退出,其中 return 语句可以带有零个或多个参数;这些参数将作为返回值供调用者使用。简单的 return 语句也可以用来结束 for 死循环,或者结束一个Go协程(goroutine)。 定义语法 Go语言中函数基本组成:关键字func、函数名、参数列表、返回值、函数体...
//blog:www.flysnow.org//wechat:flysnow_orgfuncNew(textstring)error{return&errorString{text}}typeerrorStringstruct{sstring}func(e*errorString)Error()string{returne.s} 变成以上这样,我们就可以通过New函数,辅助我们创建不同的错误了,这其实就是我们经常用到的errors.New函数,被我们一步步剖析演化而来,现...
errorinfo := fmt.Sprintf("infoa : %s , infob : %s , original err info : %s ", cerr.infoa, cerr.infob, cerr.Err.Error())returnerrorinfo }funcmain(){//方法一://采用errors包的New方法 返回一个err的类型varerrerror= errors.New("this is a new error")//由于已经实现了error接口的方...
import ("fmt""errors")//此函数读取配置文件信息//如果文件名不正确,返回自定义错误func readConfFile(FileNamestring) (err error) {//返回error类型ifFileName =="config.ini"{returnnil//表示没有错误}else{returnerrors.New("读取文件错误")
4fmt.Print(err)//Myerror 5} demo 1packagemain 2import( 3"errors" 4"fmt" 5"math" 6) 7funccircleArea(radiusfloat64)(float64, error){ 8ifradius <0{ 9//使用字符串创建一个错误 10return0, errors.New("Area calculation failed, radius is less than zero") ...
packagemainimport"errors"import"fmt"// 按照惯例,错误通常是最后一个返回值并且是 error 类型,一个内建的接口。funcf1(argint)(int,error){// errors.New 构造一个使用给定的错误信息的基本error 值。ifarg==42{return-1,errors.New("can't work with 42")}// 返回错误值为 nil 代表没有错误。returnar...
return0,fmt.Errorf("Area calculation failed, radius %.2f is less than zero",radius) 第三种、使用结构体和字段来定制 typeMyErrorstruct{errerror}//订制Error()func(e MyError)Error()string{returne.err.Error()}funcmain(){err:=MyError{errors.New("error"),}fmt.Println(err.Error())} ...
import ("fmt""errors")//此函数读取配置文件信息//如果文件名不正确,返回自定义错误func readConfFile(FileNamestring) (err error) {//返回error类型ifFileName =="config.ini"{returnnil//表示没有错误}else{returnerrors.New("读取文件错误")
程序和上一篇的withCancel是类似的,只是创建子context的方式不同,这里使用的是withTimeout和WithDeadline的方式。 下面,上代码: 代码语言:javascript 复制 packagemainimport("context""errors""fmt""time")varc=1funcdoSome(i int)error{c++fmt.Println(c)ifc>3{returnerrors.New("err occur")}returnnil}funcsp...