哦,原来是这么回事:Golang 中的一些常识( 三 )


7. Goroutine 之间不能 Recover painc现象goroutine没有父子关系(创建应该不算父子吧) , 不能在一个go中 recover 另一个 go 的 panic
理解GPM模型在go的调度时没有上下级关系, 也没有跨goroutine的异常捕获机制 。
8. error 是一个实现了Error()string 方法的任意类型.现象error 被定义为 interface{ Error()string } , 只要实现该方法的类型 , 其值都可以认为是error
9. 是否实现某个interface的的判断是区别对待 *T 和 T 的现象一个接口实现必须实现接口定义的全部方法 , 使用 指针类型的receiver 和 值类型的 receiver 是两个不同的实现 。
解释*张三不吃香菜 , 不等于张三不吃香菜 。
type User interface {Eat(food interface{}) (bool, error)}type ZhangSan struct {Name string}// *ZhangSan 实现了 User 接口// 但是 ZhangSan 没有实现func (*ZhangSan) Eat(food interface{}) (bool, error) {if food == "香菜" {return false, nil}return true, nil}func userEat(u User,food string) (bool, error){return u.Eat(food)}func main() {someone := ZhangSan{Name: "张三"}// 这里 someone 是不能传递给 userEat 的// 因为 ZhangSan 这个结构没有实现 User 接口, 只能用--tt-darkmode-color: #FFFFFF;">总结以上就Go在日常使用过程中的基本点进行了一下总结 , 是golang日常使用过程中经常碰到的点 。 由于水平有限 , 如果存在某些表述不清楚的地方 , 可以一起讨论下 。
作者:保护我方李元芳 , 授权发布
链接:
【哦,原来是这么回事:Golang 中的一些常识】来源:掘金 著作权归作者所有 。 商业转载请联系作者获得授权 , 非商业转载请注明出处 。
哦,原来是这么回事:Golang 中的一些常识文章插图


推荐阅读