日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

php小編香蕉將為大家介紹如何將已知類型轉換為指向開關中類型參數(shù)的指針。在編程中,有時我們需要將一個已知類型的變量轉換為指針,以便在程序中更靈活地操作。這種轉換可以通過使用“&”運算符來實現(xiàn)。將變量名前加上“&”運算符,即可將其轉換為指向該變量的指針。這樣,我們就可以在程序中使用指針來操作變量,而不僅僅是對其進行賦值或讀取操作。接下來,我們將詳細介紹如何進行這種類型轉換,并提供示例代碼幫助大家更好地理解。

問題內容

我正在嘗試編寫一個函數(shù),根據(jù)返回值的類型參數(shù),將 json 字符串的字節(jié)數(shù)組轉換為另一個字節(jié)數(shù)組,規(guī)則如下:

map[string]interface{}:轉換為map[string]interface{}
[]byte:不轉換,按原樣返回
struct:轉換為struct

我的代碼如下:

func getjsondata[t any](jsonbytearray []byte) (result *t, err error) {
    var buff t

    switch any(result).(type) { // https://appliedgo.com/blog/a-tip-and-a-trick-when-working-with-generics
    case *[]byte:
        result = &t(jsonbytearray)
    default:
        err = json.unmarshal(jsonbytearray, &buff)
        result = &buff
    }

    return
}

登錄后復制

此代碼在將 jsonbytearray 的類型轉換為 t 時出現(xiàn)類型錯誤,如下所示:

cannot convert jsonByteArray (variable of type []byte) to type T

登錄后復制

如何將這個[]byte類型變量的指針賦給泛型類型返回值?

解決方法

由于t受到any的約束,所以不能直接轉換。您必須斷言 &jsonbytearray 實際上與該開關情況下的 *t 類型相同:

func getjsondata[t any](jsonbytearray []byte) (result *t, err error) {
    var buff t

    switch any(result).(type) {
    case *[]byte:
        result = any(&jsonbytearray).(*t)
    default:
        err = json.unmarshal(jsonbytearray, &buff)
        result = &buff
    }

    return
}

登錄后復制

這使得編譯錯誤消失,但這并不是特別好的設計。如果您需要將 json.unmarshal 專門用于一種類型 (*[]byte),您最好更改調用站點而不是使用通用函數(shù)。

我假設您的目標是允許調用者按原樣獲取字節(jié)切片,而不是解組。然后在調用站點,您可以將該函數(shù)調用為

data := GetJsonData[[]byte](jsonByteArray)

登錄后復制

這意味著此時您已經知道 jsonbytearray 是一個字節(jié)切片。

那么,就沒有理由調用該函數(shù)了。您可以簡單地獲取參數(shù)的地址: data := &jsonbytearray ,并在其他地方使用 json.unmarshal 。

分享到:
標簽:編譯錯誤
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定