两个不同文件定义的type userError没有理解

来源:8-5 服务器统一出错处理2

BskyRui

2018-04-23

type userError interface {

    error

    Message() string

}

type userError string

func (e userError) Error() string {

    return e.Message()

}

func (e userError) Message() string {

    return string(e)

}

而且为什么这里还可以

return userError(

fmt.Sprintf("path %s must start "+

"with %s",

request.URL.Path, prefix))


写回答

1回答

ccmouse

2018-04-24

他们都是小写的,放在不同的包里,不会冲突。如果同一个包,那是不可以的。
不过这边,从string来的userError实现了userError接口,虽然他们互相都看不到对方。因为go语言实现接口只要满足我们有接口规定的函数即可。

3
4
慕粉329807310
回复
BskyRui
我觉得这里不是强制类型转换,这里的userError本身就是string的别名(type userError string)
2020-10-05
共4条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程