1.7. 利用源码来排错

说明

Go 开发中遇到莫名的 Panic 是好事。因为任何一名称职的 Go 程序员都是从这些 Panic 中成长起来的。遇到的 Panic 越多,成长的养分越多。

然而新人在学习本课程时,因为知识储备不足,遇到无法解决的 Panic 时会很苦恼 —— 耽误了学习的流畅性,且会对课程的准确性产生质疑,最终放弃学习。

这里介绍一种方法,帮我们快速跳过问题,以确保学习的流畅性。

原理

本课程的每个小节,凡是涉及代码修改的,都会有对应的 git commit。

源码里 commit 消息,对应每篇文章底部的 代码版本

因此只需要将本教程的源码下载下来,并检出对应的 commit ,即可获取到同步当前学习进度的一份代码。

具体操作

1. 下载源码

项目的代码仓库 github.com/summerblue/gohub

首先确定要检出代码存放的目录,可以是 gohub 项目的父目录,也就是 gohub 根目录下使用:

$ cd ../

clone 源码,并命名为 gohub-online

$ git clone https://github.com/summerblue/gohub.git gohub-online

2. 定位 commit hash

Git 的每一次提交,都生成一个代码版本的标示(commit hash)。接下来我们来定位这个标示。

首先在遇到问题的文章底部 代码版本 里,找到提交信息(commit message),例如:

利用源码来排错

浏览器打开 github.com/summerblue/gohub ,有两种方法,一种是进入 commit log ,一种是利用 GitHub 提供的顶部搜索:

利用源码来排错

建议使用第二种:

利用源码来排错

进入 Commits 搜索结果页面,如下图右边红框内就是我们要的 commit hash 了,复制这个哈希值:

利用源码来排错

3. 检出对应代码

回到我们的命令行,进入刚刚 Clone 下来的源码目录:

$  cd gohub-online

检出哈希值对应的源码(将下面的 commit hash 替换成上一步复制的):

$ git checkout cfedxxxxx

这时候 gothub-online 里的代码,就与出问题章节的代码对应上了。

后续的操作

源码检出来以后,可以先运行一下,确保一切工作正常

然后对比下自己那份有问题的代码,尝试着能否找到错误。

如果长时间无法定位问题,可以直接基于这份 gohub-online ,可工作的源码来学习后面的课程。保持课程学习的连贯性优先级高一点。

原来有问题的代码不要删除,等课程做完一遍(或者多做几遍),找到感觉后,再来尝试解决他。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~