第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

dynamodbattribute.UnmarshalMap 將變量的類型更改為

dynamodbattribute.UnmarshalMap 將變量的類型更改為

Go
開滿天機(jī) 2023-07-17 13:50:58
背景我正在嘗試將返回的項(xiàng)目解組dynamodb.GetItem到對(duì)象中,但我在那個(gè)地方不知道哪種類型。為此,我有一個(gè)函數(shù)emptyItemConstructor返回所需類型的新對(duì)象。問題我有一個(gè)這樣的函數(shù):func GetItem(emptyItemConstructor func() interface{}) interface{} {  myItem := emptyItemConstructor()  fmt.Printf("Type is: %T\n", myItem)  _ = dynamodbattribute.UnmarshalMap(item, &myItem)  fmt.Printf("Type now is: %T\n", myItem)}我將這個(gè)函數(shù)傳遞給emptyItemConstructor:func constructor() MyDynamoDBItemType {    return MyDynamoDBItemType{}}該函數(shù)的輸出是:Type is: MyDynamoDBItemTypeType now is: map[string]interface為什么 UnmarshalMap 改變 myItem 的類型?
查看完整描述

2 回答

?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

你的功能太復(fù)雜了。不要試圖將“泛型”思維強(qiáng)加到 Go 中。只需這樣做:


func GetItem(i interface{}) {

  _ = dynamodbattribute.UnmarshalMap(item, &i)

}

但不要忽視錯(cuò)誤:


func GetItem(i interface{}) error {

  return dynamodbattribute.UnmarshalMap(item, &i)

}

但是你根本不需要你的功能......只需使用


dynamodbattribute.UnmarshalMap(item, &i)

如預(yù)期。


查看完整回答
反對(duì) 回復(fù) 2023-07-17
?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

變量的類型myItem是,輸入?yún)?shù)interface{}的類型也是 。賦值時(shí)不比較底層類型UnmarshalMapinterface{}


示例如下:


package main


import "fmt"


func Item() interface{} {

? ? return struct {

? ? ? ? Name string

? ? }{Name: "poloxue"}

}


func ItemMap(item *interface{}) {

? ? *item = map[string]interface{}{

? ? ? ? "Name": "poloxue",

? ? }

}


func main() {

? ? m := Item()

? ? fmt.Printf("%T\n", m)

? ? ItemMap(&m)

? ? fmt.Printf("%T\n", m)

}

如果您想將 map 解組到 struct ,請(qǐng)嘗試使用mapstruct包?



查看完整回答
反對(duì) 回復(fù) 2023-07-17
  • 2 回答
  • 0 關(guān)注
  • 150 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)