为了账号安全,请及时绑定邮箱和手机立即绑定

初始化与数据库的连接时,SQLX 中未定义“错误”

初始化与数据库的连接时,SQLX 中未定义“错误”

Go
白衣非少年 2023-07-26 17:36:52
我是 Go 语言的新手,尝试连接到服务器并在 API 调用时创建数据库。但我在 处收到“未定义:错误” sqlx.Connect。最初我认为这是因为我没有定义db *sqlx.DB. 但它仍然出现错误db, err = sqlx.Connect("mysql", connection)。是否有必要定义a var err?func (setupController *SetupController) Setup(w http.ResponseWriter, r *http.Request) {    var db *sqlx.DB    var connection string    response := new(Response)    response.Host = r.FormValue("host")    response.Port = r.FormValue("port")    response.Dbuser = r.FormValue("dbuser")    response.Dbpassword = r.FormValue("dbpassword")    response.Dbname = r.FormValue("dbname")    response.Username = r.FormValue("username")    response.Password = r.FormValue("password")    connection = response.Dbuser + ":" + response.Dbpassword + "@tcp(" + response.Host + ":" + response.Port + ")/" + response.Dbname    db, err = sqlx.Connect("mysql", connection)    userJson, err := json.Marshal(response)    if err != nil {        panic(err)    }    w.Header().Set("Content-Type", "application/json")    w.WriteHeader(http.StatusOK)    w.Write(userJson)}谢谢你!
查看完整描述

1 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

这是非常基础的 Go。你应该去参观一下。特别是看看https://tour.golang.org/basics/10。并不是说在 Go 中你必须注意=和之间的细微差别:=。


但简而言之,您err在声明之前就使用了它。您可以先声明它:


  var err error

或使用简短的声明


  db, err := sqlx.Connect("mysql", connection)

也许最简单的方法是将以下行(确实进行简短声明)移到它之前,否则在声明两次时您会收到另一个错误。您可能还应该检查错误。


  userJson, err := json.Marshal(response)

  if err != nil {

    panic(err)

  }

  db, err = sqlx.Connect("mysql", connection)

  if err != nil {

    panic(err)

  }

但是,除了这个语法错误之外,我还可以看到更多问题。


查看完整回答
反对 回复 2023-07-26
  • 1 回答
  • 0 关注
  • 68 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信