亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我在左側收到多個變量時出現“單值上下文中的多值”錯誤

為什么我在左側收到多個變量時出現“單值上下文中的多值”錯誤

Go
汪汪一只貓 2022-07-11 10:46:36
我寫了 2 個函數v1GetSessionID和v1SessionIDforBind。/* * v1GetSessionID */func v1GetSessionID(c *gin.Context,                                         app *firebase.App,                                         client *firestore.Client,                                         stripcallGetSession func() func(internalUserID string, customerID string) (sessionid string, err error)) (sessionid string, err error) {    defer erapse.ShowErapsedTIme(time.Now())    idToken := c.Param("idToken")    user, err := idToken2User(app, idToken)    if err != nil {return}    customerID, err := user.getCustomerID()    if err != nil {return}    sessionid, err = stripcallGetSession()(user.getInternalID(), customerID)    return}/* * v1SessionIDforBind */func v1SessionIDforBind(c *gin.Context, app *firebase.App, client *firestore.Client) {    defer erapse.ShowErapsedTIme(time.Now())    var requestBody JsonPurchaseBindSessionRequest    if err := c.ShouldBindJSON(&requestBody); err != nil {        okngErrorOut(c, err)        return    }    stripcallGetSession := func() func(internalUserID string, customerID string) (sessionid string, err error) {            return func(internalUserID string, customerID string)(sessionid string, err error){return stripeGetSessionIDforBind(requestBody, internalUserID, customerID)}    }    sessionid, err := v1GetSessionID(c, app, client, stripcallGetSession)()    if err != nil {        log.Println(err)        okngErrorOut(c, err)    } else {        c.JSON(http.StatusOK, gin.H{            "SessionID": sessionid,        })    }}在后一個函數的中間,我將前者稱為如下;    sessionid, err := v1GetSessionID(c, app, client, stripcallGetSession)()但是 go 編譯器在單值上下文中將其指示為多值。go run *.go# command-line-arguments./v1handler.go:332:34: multiple-value v1GetSessionID() in single-value contextv1GetSessionID 返回 sessionid 字符串的 2 個值,err 錯誤,我已通過sessionid,err收到它。那么為什么我有上面提到的錯誤呢?go 版本為:go1.14.4 linux/arm。
查看完整描述

1 回答

?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

在對 v1GetSessionID() 的調用中有一組額外的括號。你用 4 個參數調用它,它會返回兩個這樣的值。但是通過在初始調用之后放置額外的括號,您要求 Go 然后執行返回值,就好像它是一個函數一樣,這就是編譯器似乎在抱怨的。簡單示例: https: //play.golang.org/p/ZX9kp6rxA09

只需刪除第二組括號,它應該可以編譯:

sessionid, err := v1GetSessionID(c, app, client, stripcallGetSession)


查看完整回答
反對 回復 2022-07-11
  • 1 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號