一些阅读笔记和实践笔记, just水滴石穿, 有耐心和坚持🌹
go的优点
- 简单
- 并行设计
- 接口完美
- 任何类型可以赋值给interface{}
- 对象对象编程
- 错误类型error还有defer
- 匿名组合, 也支持组合一个指针
- 某些语言里面变量可能存在堆上,也可能存在栈上~ go消磨了这个边界
- go可以直接嵌入C代码
- go的并发机制CSP communicating sequential process
- go可以支持过程式编程,也可以用面向对象编程
- go语言没有使用预处理器
一些名词
- gc 垃圾回收 garbage collection
- rpc(remote procedure call) 远程过程调用
- gob是go自己的以二进制形式序列化和反序列化程序数据的格式, 可以在encoding包中找到
- go语言的所有源代码, 都需要遵从unicode的uft-8编码形式
- go支持鸭子类型
- 实际上是动态语言的风格
- go在编译的过程中, 通过interface实现了鸭子类型(编译的时候会做隐匿的转换)
- 静态语言和动态语言
- python属于动态语言
- 动态语言风格: 变量绑定的类型是不确定的, 运行期间才可以确定, 函数和方法可以接受任何类型的参数, 而且调用的时候不检查参数的类型, 不需要实现接口
- go、java、C++属于静态语言,编译期间就可以发现类型不匹配; 会进行静态语言的类型检查;不需要类型显示声明实现了某个接口,只要实现了对应的方法,编译器就可以检测到
- python属于动态语言
- communicating sequential process 顺序进程通讯
- 并发执行的实体(线程或者进程), 实体之间通过channel进行通信
- 携程之间可以异步获取结果,而不需要等待正常的逻辑完成
- 过程式编程和面向对象编程
- C语言只支持过程式编程
- 属性和行为是分开的
- java要求面向对象编程
- 属性及行为包含在单个对象中, struct
- C语言只支持过程式编程
相关的链接:
https://qcrao91.gitbook.io/go/interface/go-yu-yan-yu-ya-zi-lei-xing-de-guan-xi