我使用中的代码func Root作为创建Login下面显示的另一种方法的指南。特别是,在 中Root,我将文字分配Book{}给b,然后在Scan. 该代码不会引发任何错误(尽管我不确定它是否是好的代码),但是当我尝试在Login函数中执行类似的操作时,我正在从这篇博文修改该函数,我收到此错误cannot use User literal (type User) as type *User in assignment对于它的价值,我在编译时也在上面得到这个错误no new variables on left side of :=但是我不是在第二种方法中做同样的事情,即将文字分配给u := User{}变量然后在扫描中使用它吗?当你可以和不能在赋值中使用文字类型时,你能用下面的代码解释一下吗?func Root(w http.ResponseWriter, r *http.Request) { rows, err := db.Query("SELECT title, author, description FROM books") books := []Book{} for rows.Next() { b := Book{} err := rows.Scan(&b.Title, &b.Author, &b.Description) PanicIf(err) books = append(books, b) } ...//code ommittedfunc Login(password, email string) (u *User, err error) { u := User{} db.QueryRow("select * from users where email=$1 ", email).Scan(&u.Id, &u.Password, &u.Email) if err != nil { return } err = bcrypt.CompareHashAndPassword(u.Password, []byte(password)) if err != nil { u = nil } return}
- 2 回答
- 0 关注
- 201 浏览
添加回答
举报
0/150
提交
取消