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 协议》,转载必须注明作者和本文链接
高度自律,深度思考,以勤补拙