gpt4 book ai didi

go - 如何使用通用界面表示OnePayload和ManyPayload

转载 作者:行者123 更新时间:2023-12-01 22:15:42 24 4
gpt4 key购买 nike

https://github.com/google/jsonapi/blob/master/node.go

在上面的链接中,OnePayload和ManyPayload结构具有共同的字段:

Data
Included
Links
Meta

我想编写一个使用OnePayload或ManyPayload作为参数并将值分配给Links和Meta的方法,如下所示:
func DoSomething(payload interface{}) {
...
payload.Links = links
payload.Meta = meta
}

但是我收到以下错误:
payload.Links undefined (type interface{} has no field or method Links)
payload.Meta undefined (type interface{} has no field or method Meta)

您能否建议如何使用通用界面来表示OnePayload和ManyPayload?

最佳答案

您可以使用反射:

func main() {
op := OnePayload{}
DoSomething(&op)
fmt.Print(op)
}

func DoSomething(payload interface{}) {
exampleLink := Links{}
link := reflect.New(reflect.TypeOf(exampleLink))
link.Elem().Set(reflect.ValueOf(exampleLink))

reflect.ValueOf(payload).Elem().FieldByName("Links").Set(link)

}

关于go - 如何使用通用界面表示OnePayload和ManyPayload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60409158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com