我是 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)
}
但是,除了这个语法错误之外,我还可以看到更多问题。
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报
0/150
提交
取消