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

来源:4-3 编码实战:实现用户登录接口

慕的地7923722

2020-01-20

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

写回答

2回答

xiaomo

2020-01-21

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

0
0

xiaomo

2020-01-20

同学您好, 视频里没有对课程代码里的每个方法都有讲解,这个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
2
xiaomo
回复
慕的地7923722
严重接受同学的批评,没注意到这个问题会造成这么大的困惑,这方面我现在马上改进,把目前想到的一些没讲清楚的方法先在视频对应位置添加瞄点和补充说明,同时git仓库代码也同步优化一下,后续再补录一些内容。
2020-01-20
共2条回复

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程