我是 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個贊
這是非?;A的 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 關注
- 136 瀏覽
添加回答
舉報
0/150
提交
取消