Golang interface and error handle
极客时间《Go 语言从入门到实践》学习笔记 05
16 | Go 语言的相关接口
Go 接口的实现,不依赖与接口的定义,那么还要接口做什么?
先写代码,再写接口。这个有点狠。
对于自定义类型,一方面可以简化代码,是不是有 C++ 的影子(宏定义)?另一方面感觉更像语法糖。
好几条留言都和 Java 有关,看来 Java 还是人多。
@iMARS 的代码可以帮助理解
17 | 扩展与复用
先看了留言,感觉大家对老师的怨念颇深,不过我觉的还好,打算听完这个课程,然后再到隔壁的《Go 语言核心 36 讲》去看看。
我觉得极客时间的课程整体质量还不错,如果有其他平台好的课程,或者好书(文档),不妨也推荐一下。
我是一边看视频一遍敲代码,不明白的地方看代码一般就能理解,或者看一下留言里面其他同学的代码。
18 | 不一样的接口类型,一样的多态
空接口类似于 C++ 里面的 void * 可以穿任何类型进去,类似于 Java 中的 object,如果真的使用的时候,需要进行类型转换
在 Go 里面可以使用断言 p.(type) 来判断类型,但是确实和留言里面说的一样,只能用于 switch 中,算是一种约定么?
最近的着三节,连起来看,Go 不支持继承,接口的实现和 Java 之类的语言也有很大的区别,但是可以实现多态。
不明觉厉,虽然不知道这些特性有什么优势,但是从 Google 的背书和大佬们的支持,应该还是有潜力的。
19 | 编写好的错误处理
我之前感觉 C# 和 Java 的 try-catch 挺好用的,逻辑上也很通顺。
对于 Go 的这种错误处理方式,虽然不太习惯,但是因为大佬背书,所以我觉的老师讲的 Go 错误处理的机制也都是可以接受的,多写几次就适应了。
“及早失败,避免嵌套”这个原则应该是没有问题的,以前在调试的时候,不知道要倒推多少层嵌套,容易迷路。
希望后面能看到比较典型业务代码中的错误处理机制。
留言里面,@Aprelude 和 @曾立涵 的问答很有帮助。
20 | panic 和 recover
恢复机制常常被错误使用,只是简单的打印的错误信息,或者是吞噬了异常。
在 Go 语言里面,一般说是错误处理,而不是异常处理。
我的 os.Exit(-1) 也没有输出错误代码 255,echo $? 的结果是:0
macOS Big Sur 11.2.3
版权声明: 本文为 InfoQ 作者【escray】的原创文章。
原文链接:【http://xie.infoq.cn/article/72ecd5dcc4a7f4c61adab07c8】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论