golang error 包 使用 以及error类型原理
发布时间:2021-12-12 编辑:jiaochengji.com
教程集为您提供golang error 包 使用 以及error类型原理等资源,欢迎您收藏本站,我们将为您提供最新的golang error 包 使用 以及error类型原理资源
<pre code_snippet_id="1951265" snippet_file_name="blog_20161027_1_6114744" name="code" class="plain">package main
import (
"errors"
"fmt"
)
func f1(code int) (int, error) {
if code == 1 {
return -1, errors.New("msg test error")
}
return code, nil
}
type MsgError struct {
Code int
Msg string
}
func f2(code int) (int, error) {
if code == 1 {
return -1, &MsgError{code, "struct msg test error"}
}
return code, nil
}
//golang 内置error 为interface类型
/*
定义方式为
type error interface {
Error() string
}
可以在 内置包里面找到对应源码 GOROOT/src/builtin/builtin.go
具体怎么个情况 搞不懂。但是看了一下 对应的error package
里面的new 方法返回一个对应的 构造体 指针 并定义了一个Error 方法
猜测应该是 如果返回是error 类型 内部会 自动调用对应 数据类型的 Error 方法
等真正搞明白再来修改文章
*/
func (msg *MsgError) Error() string {
return fmt.Sprintf("%s", msg.Msg)
}
func main() {
// for _, v := range []int{1, 2, 3, 4, 5, 6} {
// if code, err := f1(v); err != nil {
// fmt.Println(err)
// } else {
// fmt.Println("success:", code)
// }
// }
for _, i := range []int{1, 2, 3} {
if code, err := f2(i); err != nil {
fmt.Println(exrr)
} else {
fmt.Println("success:", code)
}
}
}
</pre>
到此这篇关于“golang error 包 使用 以及error类型原理”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!
到此这篇关于“golang error 包 使用 以及error类型原理”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!
您可能感兴趣的文章:
golang error 包 使用 以及error类型原理
Go语言error类型详解
Go自定义error错误
Golang错误处理机制
Golang实践-error
为什么Go中有的自定义error会导致内存溢出
Golang 特殊类型
golang errgroup的用法及用处
Golang错误和异常处理的正确姿势
golang中接口赋值与方法集
上一篇:golang append数组
下一篇:golang 接口 参数
[关闭]