请稍等 ...
×

采纳答案成功!

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

error: invalid memory address or nil pointer dereference 注册的时候报这个错误

package main

import (
"./model"
"./service"
“encoding/json”
“fmt”
_ “github.com/go-sql-driver/mysql
“html/template”
“log”
“math/rand”
“net/http”
)

func UserLogin(writer http.ResponseWriter, request *http.Request) {
request.ParseForm()
mobile := request.PostForm.Get(“mobile”)
passwd := request.PostForm.Get(“passwd”)

loginOk := false
if mobile == "18700000000" && passwd == "123456" {
	loginOk = true
}
if loginOk {
	data := make(map[string]interface{})
	data["id"] = 1
	data["token"] = "test"
	Resp(writer, 0, data, "")
} else {
	Resp(writer, -1, nil, "密码错误")
}

}

var UserSerivce *service.UserService
func Register(writer http.ResponseWriter, request *http.Request) {
request.ParseForm()
mobile := request.PostForm.Get(“mobile”)
passwd := request.PostForm.Get(“passwd”)
nickname := “UserName” + string(rand.Int31())
sex := model.SEX_UNKNOW
avatar := ""
user,err :=UserSerivce.Register(mobile,passwd,nickname,avatar,sex)
if err != nil{
Resp(writer,0,user,“注册成功”)
}else{
Resp(writer,-1,nil,err.Error())
}
}

type H struct {
Code int json:"code"
Msg string json:"msg"
Data interface{} json:"data,omitempty"
}

func Resp(w http.ResponseWriter, code int, data interface{}, msg string) {
w.WriteHeader(http.StatusOK)
w.Header().Set(“Content-Type”, “application/json”)
//定义结构体
h := H{
Code: code,
Data: data,
Msg: msg,
}
//结构体转JSON
js, err := json.Marshal(h)
if err != nil {
log.Println(err.Error())
}
w.Write([]byte(js))
}

func RegisterView() {
tpl, err := template.ParseGlob(“view/**/*”)
if err != nil {
log.Fatal(err.Error())
}

for _, v := range tpl.Templates() {
	tplname := v.Name()
	fmt.Println(tplname)
	http.HandleFunc(tplname, func(writer http.ResponseWriter, request *http.Request) {
		tpl.ExecuteTemplate(writer, tplname, nil)
	})
}

}

func main() {
http.HandleFunc("/user/login", UserLogin)
http.HandleFunc("/user/register", Register)

//1.提供静态资源目录支持
//http.Handle("/",http.FileServer(http.Dir(".")))
//提供指定目录暴露出来
http.Handle("/asset/", http.FileServer(http.Dir(".")))
/*登录的后端渲染并接入

http.HandleFunc("/user/login.shtml/", func(writer http.ResponseWriter, request *http.Request) {
	tem,err :=template.ParseFiles("view/user/login.html")
	if err != nil{
		log.Fatal(err.Error())
	}
	tem.ExecuteTemplate(writer,"/user/login.shtml",nil)
})

//注册的后端渲染并接入
http.HandleFunc("/user/register.shtml/", func(writer http.ResponseWriter, request *http.Request) {
	tem,err :=template.ParseFiles("view/user/register.html")
	if err != nil{
		log.Fatal(err.Error())
	}
	tem.ExecuteTemplate(writer,"/user/register.shtml",nil)
})
*/
RegisterView()
http.ListenAndServe(":8080", nil)

}

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

2回答

codelhf 2019-07-28 18:00:39

Db变量定义的问题,:=只在当前方法内有效

DbEngin,err = xorm.NewEngine(dirveName,DSName)

1 回复 有任何疑惑可以回复我~
牛津鞋 2019-06-30 23:46:09

var DbEngin *xorm.Engine

func init(){
  dirveName := "mysql"
  DSName := "root:Qq123456@(119.23.222.212:3306)/chat?charset=utf8mb4"
  err := errors.New("")
  DbEngin,err = xorm.NewEngine(dirveName,DSName)

  if err != nil {

     log.Fatal(err.Error())
  }
  //是否显示sql语句
  DbEngin.ShowSQL(true)

  //设置数据库打开最大连接数
  DbEngin.SetMaxOpenConns(2)

  //自动User
  DbEngin.Sync2(new(model.User))
  fmt.Println("init database is ok")
}



数据库连接里面的NewEngine不能覆盖之前定义的DbEngin,不然后面调用就是nil


1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号