本章小结

在本章中,您学习了类似契约的接口,以及Go中的类型方法、类型断言和反射。您还学习了如何遵循面向对象编程原则编写Go代码。

虽然反射是一个非常强大的Go特性,但它可能会减慢Go程序的速度,因为它在运行时增加了一层复杂性。此外,如果使用反射时不够仔细,Go程序可能会崩溃。

如果要只记住本章中唯一一件事,那就是Go不是面向对象的编程语言,而是可以模仿面向对象编程语言提供的一些功能,例如Java和C++。这意味着,如果计划使用面向对象的编程范式开发软件,那么最好选择Go以外的面向对象的编程语言。当然,面向对象编程并不是万能的,如果您选择像Go语言这样的编程语言,那么一样会创建一个更好、更干净、更健壮的设计!

虽然这一章的理论可能比你预期的要多,但下一章会让你的耐心得到回报,因为它将涉及Go语言中的系统编程,将要讨论文件I/O、Unix系统文件的使用、Unix信号的处理以及Unix管道的支持。另外,下一章将讨论如何使用flag包支持命令行工具中的多个命令行参数和选项、遍历目录结构、Unix文件权限以及Go标准库的syscall包提供的一些高级用法。

如果你真的喜欢用Go进行系统编程,那么阅读我的《Go Systems Programming,Packt Publishing,2017》这本书会是个好主意。