《GO语言圣经》学习初感与建议
前言
今天刚看了《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语言圣经》学习初感与建议相关推荐
- go channel 缓冲区最大限制_GO语言圣经学习笔记(八)Goroutines和Channels
奋斗鸭!Day97 知识点 goroutinue 基本用法 golang非常深度的简化了goroutinue的使用方法,异常简单,门槛降低很多 // goroutinue 使用非常简单go f() G ...
- 【Go学习】go语言圣经学习笔记
目录 前言 入门 前言 想扎扎实实的看看书,跟着书的目录结构走,记录看书笔记 The Go Programming Language Go语言圣经(中文版) 入门
- go语言圣经学习第一天——程序结构总结
文章目录 前言 程序结构 命名 声明 变量 指针 new 函数 变量的生命周期 赋值 类型 包和文件 前言 初识Go Go语言诞生于2009年,是一个年轻却充满活力的语言,该语言从C语言继承了相似的表 ...
- 《Go语言圣经》学习笔记 第二章 程序结构
Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...
- 《Go语言圣经》学习笔记 第一章 Go语言入门
Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...
- Ubuntu 16.04.6运行GitBook书籍(Go语言圣经)
最近打算学习一下go语言,了解之后打算通过go语言圣经学习,继而了解到了GitBook,为了加深学习打算在自己的服务器上发布该书籍服务. GitBook是一个命令行工具(和Node.js库),用于使用 ...
- 《Go语言圣经》学习笔记 第四章 复合数据类型
<Go语言圣经>学习笔记 第四章 复合数据类型 目录 数组 Slice Map 结构体 JSON 文本和HTML模板 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. ...
- 《Go语言圣经》学习笔记 第十一章 测试
<Go语言圣经>学习笔记 第十一章 测试 目录 go test 测试函数 测试覆盖率 基准测试 剖析 示例函数 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语 ...
- 《Go语言圣经》学习笔记 第十章 包和工具
<Go语言圣经>学习笔记 第十章 包和工具 目录 包简介 导入路径 包声明 导入声明 包的匿名导入 包和命名 工具 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. G ...
- 《Go语言圣经》学习笔记 第九章 基于共享变量的并发
<Go语言圣经>学习笔记 第九章 基于共享变量的并发 目录 竞争条件 sync.Mutex互斥锁 syn.RWMutex读写锁 内存同步 syn.Once初始化 竞争条件检测 示例:并发的 ...
最新文章
- C# 集合类(四):Hashtable
- 64位Fedora运行32位C++程序所需的类库
- idea javafx添加maven_IDEA通过Maven打包JavaFX工程(OpenJFX11)
- java面试宝典有用么_常见的Java面试题汇总
- ECharts - 气泡图
- fastapi vue socket 从其他文件调用 socket 方法
- 共合网,风投的概念和阳谋
- python三维可视化:配置tvtk
- OpenCV学习(7.13)
- 最新版华为HG255D硬件定义
- 新建Office文件丨默认模板文件
- Windows socket测试工具
- R语言——循环判断语句
- python小海龟画房子编程_教孩子学Python编程之海龟画图(一)
- Android之在app图标添加角标
- python爬取路况信息查询_如何一键获取高德交通态势数据
- chmod命令优美的用法
- 超市收费系统云服务器,云服务器超市
- 计算机专业理科二本录取分数线,理科二本大学排名及分数线
- python3连接oracle教程,python3连接oracle数据库