[Golang]一些书城项目中出现错误的原因和解决办法(一)


跟着B站尚硅谷的GoWeb教程写书城项目,整理一下自己写的时候出现的错误和解决办法。


  • 错误一:cartItem中只能加入一种书,SQL语句没有问题,但是购物车中的总金额和总数量正确:

    • 原因:cartItem的字段不完整(如没有给book1添加cartId)。
    • 解决办法:检查相应结构体变量中是否有缺少的内容,相应解决即可。
  • 错误二: 在 for rows.Next() {} 循环中出现错误:

    invalid memory address or nil pointer dereference [recovered]
    
    • 原因:没有给某个指针变量分配空间,如以下的代码:

      var book *models.Book 
      // 以上仅为声明,还未分配空间;
      // 当给book变量进行赋值操作时,就会出现上面的错误。
      
    • 解决方法:

      // 可以改为以下三种:
      // 1
      var book = &models.Book{}
      book := &models.Book{}
      // 2
      book := new(models.Book)
      

      上面的代码里,1 中的两种方式等价。