2 回答

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ù)期。

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包?
- 2 回答
- 0 關(guān)注
- 150 瀏覽
添加回答
舉報(bào)