- 将现有练习及 module 文件迁移至 go/practice,保持代码和依赖不变 - 新增 go/projects 项目区说明,更新目录约定与开发命令 BREAKING CHANGE: Go 练习命令需改在 go/practice 目录下执行
35 lines
662 B
Go
35 lines
662 B
Go
package error
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
type MatchError struct {
|
|
code int
|
|
err error
|
|
}
|
|
|
|
func (e *MatchError) Error() string {
|
|
return fmt.Sprintf("code: %d, error: %v", e.code, e.err)
|
|
}
|
|
func GetMatchError() error {
|
|
return &MatchError{code: 1, err: errors.New("123")}
|
|
}
|
|
func GetError() error {
|
|
return errors.New("123")
|
|
}
|
|
func TestError(t *testing.T) {
|
|
if err, ok := errors.AsType[*MatchError](GetMatchError()); ok {
|
|
t.Log(err)
|
|
} else {
|
|
t.Errorf("expected MatchError, got %T", GetMatchError())
|
|
}
|
|
if err, ok := errors.AsType[*MatchError](GetError()); ok {
|
|
t.Log(err)
|
|
} else {
|
|
t.Errorf("expected MatchError, got %T", GetError())
|
|
}
|
|
}
|