当前位置: 首页 > news >正文

仿织梦长沙网站公司淄博网站营销与推广

仿织梦长沙网站公司,淄博网站营销与推广,丽水品牌网站建设,汉口网站建设Golang学习笔记_17——方法 Golang学习笔记_18——接口 Golang学习笔记_19——Stringer 文章目录 error1. 接口2. 创建3. 自定义错误4. 处理错误5. 实现Error接口 源码 error 在Go语言中,error 是一个内建的接口类型,用于表示和处理错误情况。它是Go语言…

Golang学习笔记_17——方法
Golang学习笔记_18——接口
Golang学习笔记_19——Stringer


文章目录

    • error
      • 1. 接口
      • 2. 创建
      • 3. 自定义错误
      • 4. 处理错误
      • 5. 实现`Error`接口
    • 源码


error

在Go语言中,error 是一个内建的接口类型,用于表示和处理错误情况。它是Go语言错误处理机制的核心。下面将详细讲解Go语言中 error 的相关概念和用法。

1. 接口

error 接口非常简单,仅包含一个方法

type error interface {Error() string
}

2. 创建

import ("errors""fmt"
)func demo_1() {err := errors.New("something went wrong")if err != nil {fmt.Println("Error:", err)}
}

测试方法

func Test_demo_1(t *testing.T) {demo_1()
}

输出结果

=== RUN   Test_demo_1
Error: something went wrong
--- PASS: Test_demo_1 (0.00s)
PASS

3. 自定义错误

type MyError struct {Code    intMessage string
}func (e *MyError) Error() string {return fmt.Sprintf("code:%d \nmessage:%s", e.Code, e.Message)
}func demo_2() {err := &MyError{Code:    1,Message: "something went wrong",}fmt.Println(err)
}

测试方法

func Test_demo_2(t *testing.T) {demo_2()
}

输出结果

=== RUN   Test_demo_2
code:1 
message:something went wrong
--- PASS: Test_demo_2 (0.00s)
PASS

4. 处理错误

在自定义错误代码的基础上,实现错误处理

func demo_3(err *MyError) {if err != nil {fmt.Println("Error:", err)} else {fmt.Println("No error")}
}

测试方法

func Test_demo_3(t *testing.T) {type args struct {err *MyError}tests := []struct {name stringargs args}{{name: "error",args: args{err: &MyError{Code:    1,Message: "something went wrong",},},},{name: "no error",args: args{err: nil,},},}for _, tt := range tests {t.Run(tt.name, func(t *testing.T) {demo_3(tt.args.err)})}
}

输出结果

=== RUN   Test_demo_3
=== RUN   Test_demo_3/error
Error: code:1 
message:something went wrong
=== RUN   Test_demo_3/no_error
No error
--- PASS: Test_demo_3 (0.00s)--- PASS: Test_demo_3/error (0.00s)--- PASS: Test_demo_3/no_error (0.00s)
PASS

5. 实现Error接口

// 定义一个表示文件错误的结构体
type FileError struct {FileName stringErrMsg   string
}// 实现 error 接口的 Error() 方法
func (e *FileError) Error() string {return fmt.Sprintf("file error: %s - %s", e.FileName, e.ErrMsg)
}func demo_4() {err := &FileError{FileName: "example.txt",ErrMsg:   "failed to open file",}fmt.Println(err)
}

测试方法

func Test_demo_4(t *testing.T) {demo_4()
}

输出结果

=== RUN   Test_demo_4
file error: example.txt - failed to open file
--- PASS: Test_demo_4 (0.00s)
PASS

源码

// error_demo.go 文件
package error_demoimport ("errors""fmt"
)func demo_1() {err := errors.New("something went wrong")if err != nil {fmt.Println("Error:", err)}
}type MyError struct {Code    intMessage string
}func (e *MyError) Error() string {return fmt.Sprintf("code:%d \nmessage:%s", e.Code, e.Message)
}func demo_2() {err := &MyError{Code:    1,Message: "something went wrong",}fmt.Println(err)
}func demo_3(err *MyError) {if err != nil {fmt.Println("Error:", err)} else {fmt.Println("No error")}
}// 定义一个表示文件错误的结构体
type FileError struct {FileName stringErrMsg   string
}// 实现 error 接口的 Error() 方法
func (e *FileError) Error() string {return fmt.Sprintf("file error: %s - %s", e.FileName, e.ErrMsg)
}func demo_4() {err := &FileError{FileName: "example.txt",ErrMsg:   "failed to open file",}fmt.Println(err)
}
// error_demo_test.go 文件
package error_demoimport ("errors""testing"
)func Test_demo_1(t *testing.T) {demo_1()
}func Test_demo_2(t *testing.T) {demo_2()
}func Test_demo_3(t *testing.T) {type args struct {err *MyError}tests := []struct {name stringargs args}{{name: "error",args: args{err: &MyError{Code:    1,Message: "something went wrong",},},},{name: "no error",args: args{err: nil,},},}for _, tt := range tests {t.Run(tt.name, func(t *testing.T) {demo_3(tt.args.err)})}
}func Test_demo_4(t *testing.T) {demo_4()
}
http://www.khdw.cn/news/9251.html

相关文章:

  • 怎么做一个软件手机优化大师官方版
  • 设计师联盟网站搜索引擎国外
  • 建设网站那个好郑州网站建设公司哪家好
  • 电子商务网站建设移动电商开发抖音十大搜索关键词
  • 专业团队p图沈阳百度推广优化
  • web前端自学网站2023年8月疫情爆发
  • discuz模板下载广州百度seo代理
  • 成都市网站建设百度怎么做推广和宣传
  • 哪些赌博的网站怎么做的济南网络优化网址
  • 德阳网站建设ghxhwl类似凡科建站的平台
  • 电商网站构建核心关键词
  • Wordpress 无效插件seo外链网
  • 装修公司做网站seo怎么做
  • 东莞建设局网站公司网站怎么做
  • 专门做设计的网站网上营销怎么做
  • 做网站的宽度为多少效果好的关键词如何优化
  • 网站轮播图片怎么做的获客渠道有哪些
  • 免费php网站模板下载互联网推广公司
  • 深圳装饰公司网站公司网络营销策划书
  • 网站的引导页怎么做的网赌怎么推广拉客户
  • 网站舆情监控怎么做哈尔滨关键词优化报价
  • wordpress 仿手机商城网站整站优化推广方案
  • 建网站方案最新热点新闻事件素材
  • 营销型网站建设要点种子搜索神器
  • 织梦txt网站地图制作怎样进行seo优化
  • 网站建设速成班ueeshop建站费用
  • 商城网站建设框架世界足球排名前十名
  • 网站导航设计模板网站如何提交百度收录
  • 北京的广告公司网站建设网站设计需要什么
  • 做网站怎么添加关键词网上推广渠道有哪些