1 回答

TA貢獻1796條經驗 獲得超4個贊
命名您的返回參數,然后您可以在defer方法中設置它:
func getDBStoreStatus() (replyMessage string) {
defer func(){
if err := recover(); err != nil {
replyMessage = "Error happend."
}
}()
//do something to store row into DB
db, err := sql.Open("mysql", "user1:password@/databaseName?charset=utf8")
newMessage, err := db.Prepare("INSERT .............
res, err := newMessage.Exec(...........
if err != nil {
panic(err)
}
replyMessage = "OK"
return replyMessage
}
請參閱關于延遲、恐慌和恢復的 Go 博客文章:
延遲函數可以讀取并分配給返回函數的命名返回值。
在此示例中,延遲函數在周圍函數返回后遞增返回值 i。因此,此函數返回 2:
func c() (i int) {
defer func() { i++ }()
return 1
}
不過,我真的不明白這一點。你可以這樣做:
if err != nil {
return "Error happend."
}
而不是panic(err).
- 1 回答
- 0 關注
- 130 瀏覽
添加回答
舉報