前言

今天刚看了《GO语言圣经》的前二十页,感触颇深,深感此书之精髓,令人叹服,决定从今日起,记录下啃书的收获与感悟,与君共勉!!!
在记录中,我会有选择的进行分享,对那些自我感觉比较关键的细细解读,一些不是太重要的我就简单略过了,以此节省大家的时间。有兴趣的小伙伴可以边看书边看我的博客,一起交流一起进步一起成长,效果想必是极好的。

学习建议

首先说一下,我自学GO语言已经大概两个月了,大致学完了GO的所有基本语法,本以为看这本书会轻松一些,没想到从第一章就处处是玄机,处处是奥妙,揭示了我对GO的诸多盲区,因此建议其他想看这本书的小伙伴,在零基础时候不建议看这本书,最好在学习一个月之后再开始看这本书,有利于扫掉盲区,加深对go的理解。
开始

翻开此书,首先是前言部分,抛开那些写书的杂七杂八的感谢词不说,首先就是这张GO语言的进化图,这张图揭示了GO语言的进化史,GO的三个重要的祖先CSP、ALGOL和C直接就显示出GO语言的几个特点,比如导入包的设定,垃圾回收机制,用于进程之间通信的管道,动态数组切片等,都来源于这些语言中的思想。

下面进入第一章!
1.1Hello World
很多人看到Hello world心里都会一阵放松,心想这也太SB了,侮辱我智商嘛这不是,更有甚者直接跳过了这一段,但是这里的学问同样不可小觑,看了这一篇之后,引人深思,小编脑洞大开,感兴趣的朋友可以戳传送门,记录了我从hello world引申出来的一些想法和实践。:
戳了解——>Golang打印出世界上所有的语言文字!

1.2命令行参数
这里开始就有值得细细品味的了,据说是UNIX命令echo的实现,这个命令会在当前所在行打印出命令行参数。

echo1:

func main() {var s,sep stringfor i:=1;i<len(os.Args) ;i++  {s+=sep+os.Args[i]sep=" "}fmt.Println(s)
}

这是书中的源代码,乍一看,挺简单的,s用来存放所有的命令行字符,sep用来加上空格,便于区分,os.Args会返回字符串切片类型,不是挺简单的嘛,但是细细品来,这段代码却是很精辟的,不信?我们来看:
第一次进入循环时,sep还没有被赋值,此时sep为空,所以在第一次“s+=”操作时,前面没有空格,s加完后sep被赋值为空格,以后每次"s+="操作时都相当于加上一个“空格+命令行”,如此运行下来,s中便不会出现头尾有空格的情况,因此这里的sep赋值的位置和"s+="的位置是很考究的,要知道在计算机中是不能出现多一个空格,少一个空格的情况的。这里让我很是受用。
看完这里之后,我就想起来我昨天做的一个编程题,并去优化了一下,因为平时敲代码的时候,我会选择使用strings.Trimspace函数来去掉头尾空格,这样看似效果一样,但是不是最优解,比较繁琐,若是像书中的这段代码一样,注意好逻辑,便能省下不少步骤。

echo2:

这一段代码只是echo1的改版,个人觉得亮点如下:
使用了自动推倒类型,这是GO语言特有的一种简便方法,值得注意的是,自动推倒类型不能作全局变量使用。
使用了for range迭代的方法,for range遍历一般返回两个值,第一个为下标索引,第二个为下标所对应的值,一般使用自动推倒类型接收两个值较为方便,值得注意的是GO语言中不能有没有被使用的值出现,因此若是不需要的值,可以使用_下划线来丢弃,比如此段代码中的索引值是不需要的。
os.Args的返回值为[]string,字符切片,是一种go语言中特有的动态数组,可以使用[n:m]这样地方法进行切割所需,比如这段代码中就是用了os.Args[1:],意思是取从下标为1的值到后面所有!

echo3

到这里,已经将我们之前的代码简化成短短一行了,效果是一样的,这里主要是使用了strings.join这个函数,可以将字符切片通过第二个参数连接起来,非常好用!

练习题
最后,本书抛出了三个练习题给我们

过于简单,这里就不多比比了,只要能把上面的echo1~echo3搞懂,相信这里就是小意思了。

有任何问题都可以通过各种方式给我留言哦,欢迎大家一起交流,一起学习GO语言

《GO语言圣经》学习初感与建议相关推荐

  1. go channel 缓冲区最大限制_GO语言圣经学习笔记(八)Goroutines和Channels

    奋斗鸭!Day97 知识点 goroutinue 基本用法 golang非常深度的简化了goroutinue的使用方法,异常简单,门槛降低很多 // goroutinue 使用非常简单go f() G ...

  2. 【Go学习】go语言圣经学习笔记

    目录 前言 入门 前言 想扎扎实实的看看书,跟着书的目录结构走,记录看书笔记 The Go Programming Language Go语言圣经(中文版) 入门

  3. go语言圣经学习第一天——程序结构总结

    文章目录 前言 程序结构 命名 声明 变量 指针 new 函数 变量的生命周期 赋值 类型 包和文件 前言 初识Go Go语言诞生于2009年,是一个年轻却充满活力的语言,该语言从C语言继承了相似的表 ...

  4. 《Go语言圣经》学习笔记 第二章 程序结构

    Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...

  5. 《Go语言圣经》学习笔记 第一章 Go语言入门

    Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...

  6. Ubuntu 16.04.6运行GitBook书籍(Go语言圣经)

    最近打算学习一下go语言,了解之后打算通过go语言圣经学习,继而了解到了GitBook,为了加深学习打算在自己的服务器上发布该书籍服务. GitBook是一个命令行工具(和Node.js库),用于使用 ...

  7. 《Go语言圣经》学习笔记 第四章 复合数据类型

    <Go语言圣经>学习笔记 第四章 复合数据类型 目录 数组 Slice Map 结构体 JSON 文本和HTML模板 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. ...

  8. 《Go语言圣经》学习笔记 第十一章 测试

    <Go语言圣经>学习笔记 第十一章 测试 目录 go test 测试函数 测试覆盖率 基准测试 剖析 示例函数 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语 ...

  9. 《Go语言圣经》学习笔记 第十章 包和工具

    <Go语言圣经>学习笔记 第十章 包和工具 目录 包简介 导入路径 包声明 导入声明 包的匿名导入 包和命名 工具 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. G ...

  10. 《Go语言圣经》学习笔记 第九章 基于共享变量的并发

    <Go语言圣经>学习笔记 第九章 基于共享变量的并发 目录 竞争条件 sync.Mutex互斥锁 syn.RWMutex读写锁 内存同步 syn.Once初始化 竞争条件检测 示例:并发的 ...

最新文章

  1. C# 集合类(四):Hashtable
  2. 64位Fedora运行32位C++程序所需的类库
  3. idea javafx添加maven_IDEA通过Maven打包JavaFX工程(OpenJFX11)
  4. java面试宝典有用么_常见的Java面试题汇总
  5. ECharts - 气泡图
  6. fastapi vue socket 从其他文件调用 socket 方法
  7. 共合网,风投的概念和阳谋
  8. python三维可视化:配置tvtk
  9. OpenCV学习(7.13)
  10. 最新版华为HG255D硬件定义
  11. 新建Office文件丨默认模板文件
  12. Windows socket测试工具
  13. R语言——循环判断语句
  14. python小海龟画房子编程_教孩子学Python编程之海龟画图(一)
  15. Android之在app图标添加角标
  16. python爬取路况信息查询_如何一键获取高德交通态势数据
  17. chmod命令优美的用法
  18. 超市收费系统云服务器,云服务器超市
  19. 计算机专业理科二本录取分数线,理科二本大学排名及分数线
  20. python3连接oracle教程,python3连接oracle数据库

热门文章

  1. ACMer值得看的博客
  2. 200w的数据量能够占多大内存?发生了OOM如何进行JVM调优?
  3. python实现简单的三边测量定位
  4. [转]安装win7系统不产生100M保留分区
  5. html5生成桌面图标,简单几步打造独一无二的动态桌面图标
  6. CentOS7 安装 7-zip 压缩工具
  7. 易语言lol自动接受源码分享以及lolApi相关使用教程
  8. cad黑色背景变成白色_CAD操作很难记?记住了又易混淆?那就看这里!
  9. 2022-08-19 mysql/stonedb-索引优化专利交底书-改进点
  10. es服务器的cpu压力过大的调试