gpt4 book ai didi

go - 初始化与数据库的连接时,SQLX 中未定义 'err'

转载 作者:行者123 更新时间:2023-12-03 01:29:51 26 4
gpt4 key购买 nike

我是 Go 语言的新手,正在尝试连接到服务器并在 API 调用时创建数据库。

但是我在 sqlx.Connect 处收到“undefined:err”。最初我认为这是因为我没有定义db *sqlx.DB。但它仍然在 db, err = sqlx.Connect("mysql", connection) 处出现错误。

是否有必要定义一个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)
}

谢谢!

最佳答案

这是非常基本的 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)
}

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

关于go - 初始化与数据库的连接时,SQLX 中未定义 'err',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58195027/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com