2 回答

TA貢獻1808條經驗 獲得超4個贊
你的功能太復雜了。不要試圖將“泛型”思維強加到 Go 中。只需這樣做:
func GetItem(i interface{}) {
_ = dynamodbattribute.UnmarshalMap(item, &i)
}
但不要忽視錯誤:
func GetItem(i interface{}) error {
return dynamodbattribute.UnmarshalMap(item, &i)
}
但是你根本不需要你的功能......只需使用
dynamodbattribute.UnmarshalMap(item, &i)
如預期。

TA貢獻1909條經驗 獲得超7個贊
變量的類型myItem是,輸入參數interface{}的類型也是 。賦值時不比較底層類型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 ,請嘗試使用mapstruct包?
- 2 回答
- 0 關注
- 133 瀏覽
添加回答
舉報