0
rows, err := db.Query("SELECT * FROM user")
checkErr(err)
 
for rows.Next() {
    var userId int
    var userName string
    var userAge int
    var userSex int
    rows.Columns()
    err = rows.Scan(&userId, &userName, &userAge, &userSex)
    checkErr(err)
    fmt.Println(userId)
    fmt.Println(userName)
    fmt.Println(userAge)
    fmt.Println(userSex)
}

如果这时候操作数据在userName前面新增一个字段
这段代码岂不是就废了
在项目中会这样写吗?

3个回答

0

所以你最好不要 select * 而是指定字段,如果嫌烦,可以用 https://github.com/jmoiron/sqlx 这个项目,至少使用起来和原生差不多,而不强制你ORM

0

SELECT * 这样做的习惯可不好,一般都是指定字段,这样在scan的时候也相对容易把握变量顺序和个数。

0

实际代码中不会这么写的。
两个方式

  1. 是用Slice来存储。这样,增减字段都不会提取数据的代码。如果想更智能一点,把字段提取出来,然后按顺序生成一个Map的slice。
  2. 简单一点的方法就是用ORM喽。

题主的这个代码,只是Go的基本代码。但是工作环境,肯定是要自行封装或用更方便的包的。

撰写答案