《GO语言圣经》学习初感与建议 - Go语言中文社区

《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 string
	for 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语言

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42940826/article/details/82706176
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢