读书笔记--GO语言精进之路--01熟知GO语言的一切
文章目录
- 前言
- 作者写这本书的目的
- 作者的解答思路
- 1. Go语言的诞生
- 2. Go语言的设计哲学
- 2.1 追求简单,少即是多
- 2.2 偏好组合,正交解耦
- 2.3 原生并发,轻量高效
- 2.4 面向工程,自带电池
- 3. 使用Go语言原生编程思维来写Go代码
前言
作者写这本书的目的
回答「Go入门容易,精进难,怎么才能像Go开发团队那样写出符合Go思维和语言惯例的高质量代码?」
作者的解答思路
- 思维层面:写出高质量Go代码的前提是思维方式的进阶,即用Go语言的思维写Go代码
- 实践技巧层面:Go标准库和优秀开源库是挖掘符合Go惯用法的高质量Go代码的宝库,对其进行阅读、整理和归纳,可以得到一些能够帮助我们快速进阶的有效实践。
1. Go语言的诞生
Rob Pike、Robert GriesemerKen Thompson三位巨佬在2007.9.20下午的一次大约一小时的C++构建编译等待过程中探讨萌芽的,目的是为了解决C++复杂性高、编译构建速度慢、不便支持并发等。
一天后三位大佬开启了具体设计的回忆,两天后发布邮件,五天后正式命名为Go,2009.10.30日Rob Pike在Google Tech talk上做了关于Go语言的演讲“The Go Programming Language”,Go语言正式公之于众。
想起了念书时历史课中的一个问题:是伟人创造了历史还是人民群众创造了历史?
2. Go语言的设计哲学
2.1 追求简单,少即是多
拒绝走语言特性融合的道路,而选择做减法。把负责留给自己,将简单易用留给gopher。
- 简介、常规的语法、仅25个关键字
- 内置垃圾手机,降低开发人员内存管理心智
- 没有子类型继承
- 首字母大小决定可见性
- 方法就是函数
- 接口只是方法集合
- 内置字符串、切片、map
- 内置支持并发
- …
2.2 偏好组合,正交解耦
Go语言本质上不属于经典OO语言范畴,不像C++、Java等主流OO语言通过庞大的自上而下的类型体系、继承、显式接口实现将程序的各个部分耦合起来,Go语言所遵从的设计哲学是组合。
隐式的interface让程序各个部分之间的耦合降到最低,自然地遵从了依赖抽象、里氏替换、接口隔离原则。
- 无类型体系,类型之间是独立的,没有子类型的概念
- 每个类型都可以有自己的方法集合,类型定义与方法实现是正交独立的
- 接口与其实现之间隐式关联
- 包之间是相对独立的,没有子包的概念
2.3 原生并发,轻量高效
- Go语言采用轻量级协程并发模型
- Go语言为开发者提供支持并发的语法元素和机制
2.4 面向工程,自带电池
面向真实世界中Google内部大规模软件开发的存在的各种问题,为这些问题提供答案。
- 程序构建慢
- 失控的依赖管理
- 开发人员使用编程语言的不同子集
- 代码可理解性差
3. 使用Go语言原生编程思维来写Go代码
萨丕尔-沃夫假说:语言影响或决定人类的思维方式。
读书笔记--GO语言精进之路--01熟知GO语言的一切相关推荐
- 《Go语言精进之路,从新手到高手的编程思想、方法和技巧1》读书笔记和分享
Go语言精进之路,从新手到高手的编程思想.方法和技巧 读书分享 1 本书定位 2 本书内容总览 3 选择本书的原因 4 小收获分享 第7-12条 真的不知道咋命名 第13-19条 能用--怎么用更好 ...
- 小熊肝了十个小时,搞出一本 go 语言精进之路
小熊肝了十个小时,搞出一本 go 语言精进之路 这本书基于 Go 语言版本 1.16 版本,后续可能会再调整,目录也还未明确,正在努力持续更新中,整体进度未明.这也是一本持续更新迭代的书籍. 这本书有 ...
- 读书笔记-思维的精进
读书笔记-思维的精进 作者:大卫·罗布森 1.中心思想: 1.要避开哪些智力陷阱. 2.如何锻炼自己的思维能力,避开智力陷阱. 2.智力陷阱的形式 智力陷阱的产生,很大程度上不是因为认知水平太低,恰恰 ...
- Go语言精进之路:绞尽脑汁,帮你理解方法本质并选择正确的receiver类型
Go语言虽然不支持经典的面向对象语法元素,比如:类.对象.继承等,但Go语言也有方法(method).和函数相比,Go语言中的方法在声明形式上仅仅多了一个参数,Go称之为receiver参数.而rec ...
- 202314读书笔记|《孩子们的诗》——简单的语言,击中每个人心中的诗意
202314读书笔记|<孩子们的诗>--简单的语言,击中每个人心中的诗意 <孩子们的诗>作者果麦.这本书中的诗都是孩子们写的,虽然他们或许并不认为自己写的是诗.每个人都想一直做 ...
- C语言-学习之路-01
C语言学习之路-01 目录 关键字 数据类型 常量 变量 声明和定义 进制 sizeof关键字 整型:int short.int.long.long long 字符型:char ASCII对照表 转义 ...
- ❤️【Android精进之路-01】定计划,重行动来学Android吧❤️
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. Android精进之路第一篇,确定安卓学习计划. 干货满满,建议收藏,需要用到时常看看.小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~. 文章目 ...
- ppt模板员工管理系统c语言,[PPT模板]第01章c语言.ppt
[PPT模板]第01章c语言 1.1C语言出现的历史背景 1.C语言的诞生与发展 (1)在C语言诞生以前,系统软件主要是用汇编语言编写的.由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差:但 ...
- 《笑着离开惠普》读书笔记之员工成长之路
1.发现惠普 一个企业如果经营得好,可以赚到钱:一个企业如果管理得好,可以很健康:而惟有当一个企业文化好的时候,才会令员工快乐地工作.而惠普就是这样一家集赢利.健康.快乐于一体的卓越企业. 我们不可能 ...
最新文章
- tf.matmul / tf.multiply
- ICML 2020论文贡献榜排名出炉:Google单挑斯坦福、MIT、伯克利;清华进TOP 20
- 互联网协议 — New IP 网络架构
- 现在计算机学什么好找工作吗,计算机专业都学什么 毕业好找工作吗
- 阿里百川IIMSDK-- 加好友,获取好友
- [剑指offer] 27. 字符串的排列
- 报文解析_104规约报文结构解析
- MySQL的主动优化和被动优化_MySQL“被动”性能优化汇总!
- 用TensorFlow的Linear/DNNRegrressor预测数据
- python中的不可变对象_python中的可变与不可变对象
- arm与linux些许问题,arm-linux中遇到的问题
- php7版本搭建sqli labs,CentOS 7 LAMP搭建并且部署sqli-labs
- 以命令行的格式读取音频文件信息,并将读取的内容写到输出文件中
- Apache环境.htaccess伪静态301跳转(www与不带www)
- Android实现全屏显示的方法
- 74LS138的结构
- 如何看懂财务报表:(二)财务报表目录解释
- Summary of defect detection algorithms based on deep learning
- 嵌入式和java工资对比_嵌入式和java哪个前景好
- Gitalk出现Error:Validation Failed问题的解决办法