请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我想知道mydb的parseRows方法是什么时候讲的?

反复看了前面的视频,难道我看漏了么,突然间就多了个这个方法?

正在回答 回答被采纳积分+3

2回答

xiaomo 2020-01-21 14:02:05

年后课程计划做升级优化,不知道小伙伴是否方便加好友,想收集收集意见,了解下都有哪些地方可以进行优化改进和提高学习效果呢。后续有问题可以随时沟通联系~

0 回复 有任何疑惑可以回复我~
xiaomo 2020-01-20 16:15:44

同学您好, 视频里没有对课程代码里的每个方法都有讲解,这个ParseRows方法目前已经在视频里添加了瞄点作为补充说明,可以刷新4-3小节看看哈。另外具体代码也可以在git仓库中查看:

https://git.imooc.com/coding-323/filestore-server/src/charter4/db/mysql/conn.go

很抱歉因为这个问题造成同学们的疑惑, 也非常感谢同学的批评和提醒。


以下为ParseRows方法的具体代码,我补充了一些注释, 如果还有疑问随时欢迎拍砖哦~~

func ParseRows(rows *sql.Rows) []map[string]interface{} {
    // 获取记录列(名)
	columns, _ := rows.Columns()
	// 创建列值的slice (values),并为每一列初始化一个指针
	// scanArgs用作rows.Scan中的传入参数
	scanArgs := make([]interface{}, len(columns))
	values := make([]interface{}, len(columns))
	for j := range values {
		scanArgs[j] = &values[j]
	}

    // record为每次迭代中存储行记录的临时变量
	record := make(map[string]interface{})
	// records为函数最终返回的数据(列表)
	records := make([]map[string]interface{}, 0)
	// 迭代行记录
	for rows.Next() {
		//每Scan一次,将一行数据保存到record字典
		err := rows.Scan(scanArgs...)
		checkErr(err)

		for i, col := range values {
			if col != nil {
				record[columns[i]] = col
			}
		}
		records = append(records, record)
	}
	return records
}
0 回复 有任何疑惑可以回复我~
  • 提问者 慕的地7923722 #1
    这方法是不难,翻一下源码就算没注释的确能理解.不过突然出现我还以为之前看视频那个节迷糊过去了,寻思着回头翻翻看看还有哪个地方听漏的.反复看折腾了大半夜.
    说都没说,就在评论区里面提到一句不是每个方法都可以讲这个我且不说对不对(虽然我在慕课网那么多门课没遇见过而且我觉得很敷衍),但是莫名出现一个方法对那种每一分钟都对着认真学认真敲的人实在太伤了.
    回复 有任何疑惑可以回复我~ 2020-01-20 17:06:11
  • xiaomo 回复 提问者 慕的地7923722 #2
    严重接受同学的批评,没注意到这个问题会造成这么大的困惑,这方面我现在马上改进,把目前想到的一些没讲清楚的方法先在视频对应位置添加瞄点和补充说明,同时git仓库代码也同步优化一下,后续再补录一些内容。
    回复 有任何疑惑可以回复我~ 2020-01-20 18:38:35
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信