golang 基础的语法特性基本已经学完了,这几天我一直在思考下一步的学习方向跟计划。有很多方向可以选择比如:可以学习 web 编程、网络编程,往应用方向学习等待。可是我思前想后还是觉得应用固然很重要,但是扎实的基础对于一个学习者来说更为重要!
最后确定了:分析标准库的源码。go 一共有 150+ 的包,这是一场长期攻坚战。
概述
为什么选择分析源码包?
- 标准库是 go 的核心。
- 标准库的使用是必修课,既然要学为何不直接知其所以然。
- 站在巨人的肩膀上,「学得多看得远」。
我认为通过标准库源码的分析可以收获:
- 标准库的使用。
- 标准库的底层实现。
- 学习大神的编码哲学。
- 极大的提高编码能力和水平。
- 英文水平「源码注释都是英文的」。
- 代码分析能力。
能看懂内核里面的代码就是最大的幸福,更不用说修改里面的代码了。
到现在发现 golang 真的很简洁。他的关键字很少,只有 25 个,如下:
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
如何分析
整体将按照如下思路进行
fmtfmt
如何对包进行分析?
- 翻译注释
- 解读源码分析逻辑
- 思考与练习包的使用
- 如果可以自己尝试实现包
- 总结
所有 Package 的集合
下面先大概列出所有的包以及它们的作用「有一些包的介绍来自《 Go 入门教程 》」
archive/tar/zip-compressfmtiobufiopath/filepathflagfmtiobufiopath/filepathflagstringsstrconvunicoderegexpbytesstringsstrconvunicoderegexpbytesindex/suffixarraymathmath/cmathmath/bigmath/randsortmathmath/cmathmath/randsortmath/bigcontainer/list-ring-heaplistringbuiltincompress/bzip2/flate/gzip/lzwzlibcompress/bzip2flategziplzwzlibcontextcryptocrypto/md5cryptocrypto/md5crypto/sha1errorsexpvarhashhtmlimage/color/draw/gif/jpegpngimageimage/colorimage/drawimage/gifimage/jpegimage/pngsortunsafesyscallosos/execosos/execsyscalltimelogtimelogencoding/jsonencoding/xmltext/templateencoding/jsonencoding/xmltext/templatenetnet/httpnethttpruntimereflectsql
整列表可以在 Go Walker 查看。
总结
Go 的包还是挺多的,其实分析源码本身就是一件不容易的事,这时第一步,接下来要坚持下来。以此来驱动我提高编码能力跟代码质量以及英语水平。
最后重要的事情:如有不对或者错误的地方欢迎大家指正,或者意见建议。『初出茅庐、欢迎指点』
本作品采用《CC 协议》,转载必须注明作者和本文链接
高度自律,深度思考,以勤补拙