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 关注
- 96 浏览
添加回答
举报