文章目录

  • 前言
    • 作者写这本书的目的
    • 作者的解答思路
    • 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语言的一切相关推荐

  1. 《Go语言精进之路,从新手到高手的编程思想、方法和技巧1》读书笔记和分享

    Go语言精进之路,从新手到高手的编程思想.方法和技巧 读书分享 1 本书定位 2 本书内容总览 3 选择本书的原因 4 小收获分享 第7-12条 真的不知道咋命名 第13-19条 能用--怎么用更好 ...

  2. 小熊肝了十个小时,搞出一本 go 语言精进之路

    小熊肝了十个小时,搞出一本 go 语言精进之路 这本书基于 Go 语言版本 1.16 版本,后续可能会再调整,目录也还未明确,正在努力持续更新中,整体进度未明.这也是一本持续更新迭代的书籍. 这本书有 ...

  3. 读书笔记-思维的精进

    读书笔记-思维的精进 作者:大卫·罗布森 1.中心思想: 1.要避开哪些智力陷阱. 2.如何锻炼自己的思维能力,避开智力陷阱. 2.智力陷阱的形式 智力陷阱的产生,很大程度上不是因为认知水平太低,恰恰 ...

  4. Go语言精进之路:绞尽脑汁,帮你理解方法本质并选择正确的receiver类型

    Go语言虽然不支持经典的面向对象语法元素,比如:类.对象.继承等,但Go语言也有方法(method).和函数相比,Go语言中的方法在声明形式上仅仅多了一个参数,Go称之为receiver参数.而rec ...

  5. 202314读书笔记|《孩子们的诗》——简单的语言,击中每个人心中的诗意

    202314读书笔记|<孩子们的诗>--简单的语言,击中每个人心中的诗意 <孩子们的诗>作者果麦.这本书中的诗都是孩子们写的,虽然他们或许并不认为自己写的是诗.每个人都想一直做 ...

  6. C语言-学习之路-01

    C语言学习之路-01 目录 关键字 数据类型 常量 变量 声明和定义 进制 sizeof关键字 整型:int short.int.long.long long 字符型:char ASCII对照表 转义 ...

  7. ❤️【Android精进之路-01】定计划,重行动来学Android吧❤️

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. Android精进之路第一篇,确定安卓学习计划. 干货满满,建议收藏,需要用到时常看看.小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~. 文章目 ...

  8. ppt模板员工管理系统c语言,[PPT模板]第01章c语言.ppt

    [PPT模板]第01章c语言 1.1C语言出现的历史背景 1.C语言的诞生与发展 (1)在C语言诞生以前,系统软件主要是用汇编语言编写的.由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差:但 ...

  9. 《笑着离开惠普》读书笔记之员工成长之路

    1.发现惠普 一个企业如果经营得好,可以赚到钱:一个企业如果管理得好,可以很健康:而惟有当一个企业文化好的时候,才会令员工快乐地工作.而惠普就是这样一家集赢利.健康.快乐于一体的卓越企业. 我们不可能 ...

最新文章

  1. tf.matmul / tf.multiply
  2. ICML 2020论文贡献榜排名出炉:Google单挑斯坦福、MIT、伯克利;清华进TOP 20
  3. 互联网协议 — New IP 网络架构
  4. 现在计算机学什么好找工作吗,计算机专业都学什么 毕业好找工作吗
  5. 阿里百川IIMSDK-- 加好友,获取好友
  6. [剑指offer] 27. 字符串的排列
  7. 报文解析_104规约报文结构解析
  8. MySQL的主动优化和被动优化_MySQL“被动”性能优化汇总!
  9. 用TensorFlow的Linear/DNNRegrressor预测数据
  10. python中的不可变对象_python中的可变与不可变对象
  11. arm与linux些许问题,arm-linux中遇到的问题
  12. php7版本搭建sqli labs,CentOS 7 LAMP搭建并且部署sqli-labs
  13. 以命令行的格式读取音频文件信息,并将读取的内容写到输出文件中
  14. Apache环境.htaccess伪静态301跳转(www与不带www)
  15. Android实现全屏显示的方法
  16. 74LS138的结构
  17. 如何看懂财务报表:(二)财务报表目录解释
  18. Summary of defect detection algorithms based on deep learning
  19. 嵌入式和java工资对比_嵌入式和java哪个前景好
  20. Gitalk出现Error:Validation Failed问题的解决办法

热门文章

  1. 一位老司机总结的数据分析入门指南
  2. MMORPG游戏AOI流程
  3. 深克隆和浅克隆有什么区别?它的实现方式有哪些?
  4. 逆向中静态分析工具——IDA初学者笔记(IDA Pro使用教程)
  5. 计算机电子简报怎么做,如何制作电子简报
  6. HTML块元素和行内块元素
  7. 这次单片机缺货,是国产单片机发展的绝好机会
  8. 建筑CAD中怎么画剖切符号?
  9. 公司注册资金认缴制是怎样
  10. 【行研报告】2020年香蜜湖金融科技创新蓝皮书——附下载链接