Go语言学习之路

2018年09月08日

缘起

  • 2018年5月左右了解区块链知识后,开始想了解Go语言,只是主观有想法,并没有安装啥环境,当时弄论文答辩、毕业相关,就从图书馆借了本《Go语言学习笔记》,实话,当时看其实并没有啥感觉,纯粹只是看看。
  • 等正式接触链码开发时,装环境,写链码(chaincode),虽然日常语法也能看懂,虽然没有分号,类型写在后面,这些开始不太适应,后面上手倒也挺快的。但代码中make()defer以及提到的并发goroutine通道这些关键字,总有点似懂非懂,于是琢磨着是不是学一下这门语言。
  • 大概7月左右下了本《Go语言实战》以及《Go程序设计语言》,于是7-8月只是随意翻看两本书的内容,日常也做做笔记,敲敲代码,但并没有系统看,或者把这个学习当个task来认真对待。
  • 真正想认真去看呢是2018年35周(8.27-9.2),具体那一周有啥输出,后面会聊到。
  • 总体目标而言是2018年度把提到的3本书给吃透,如果没有看完,至少要知道自己的问题在哪,而不是这个任务就挂起了。

内容

0、写在前面的

  • 因为前期这三本书都有粗略的翻过,大概知识点也知道,于是画了个思维导图,同时“按周安排的学习任务”。
  • 总体而言呢,《TGPL》的书有点难度,一些知识点穿插其中,主要啃这本书。其它两本呢,一当是复习,二当是对学习《TGPL》是不是有些点有促进作用。

1、按周安排的学习任务

  • 35周(8.27-9.2)已完成
    • 安装好开发环境,《GIA》chap02、《TGPL》chap01的代码,照本抄着运行起来,建立一种感觉,当然前期可以运行一下Hello World,并提交到GitHub上。
    • 这部分遇到的问题,找身边的人问一下,或者网上问一下,都能解决,耐着性子敲着并运行。大概会遇到两类问题。
      • 如何引用包,go get从github下载过来的文件夹如何在.go里找到。
      • 代码如果不放在GOPATH下可能运行结果不错。
  • 36周(9.3-9.9)
    • 目标:了解程序结构、常见基本数据类型、main函数的使用,在运行代码中学习语法点,并将代码提交到github上。
    • 任务list
      • 复习35周的内容。
      • 粗读下《TGPL》的chap02-chap09,精读《TGPL》的chap02。
      • 精读下《GLSN》的chap01、chap02。
  • 37周(9.10-9.16)
    • 目标:因为本周末要去青岛,本周就少一些,代码还是要提交的。
    • 任务list:
      • 复习35周的内容。
      • 把《TGPL》chap02精读过程中的问题列一下,chap03也开始读。
      • 《GLSN》的chap03得结束,总体而言,这本书没啥难度。
      • 可以在路上或者住酒店的时候看看《GIA》的chap01-chap03的电子书内容,权当是复习吧。
  • 38周(9.17-9.23)
    • 目标:Go里面的”程序结构、基本数据、复合数据类型“常见内容要OK。也就是《TGPL》的前三章,不会的要单独列出来,哪一节的哪个知识点,还是某一节都不OK。
      • 列出《TGPL》前3章的问题点,以及有哪些收获。
      • 列出38周之前没有真正做到的部分,然后重新排39周的学习任务和目标。
    • 完成的list
      • 《GLSN》的chap04函数第一遍看完。defer和匿名函数语法上有初步认识,但应用场景还在琢磨
  • 39周(9.24-9.30)
  • 40周()

后记

备注

  • 《Go语言学习笔记》简写成GLSN “Go Language Study Notes” 这是我自己标记的
  • 《Go语言实战》简写成GIA 《Go In Action》
  • 《Go程序设计语言》简写成TGPL 《The Go Programming Language》