gpt4 book ai didi

json - Golang API 响应的 Catchall 类型

转载 作者:数据小太阳 更新时间:2023-10-29 03:33:33 26 4
gpt4 key购买 nike

我正在尝试定义一个可以容纳任何类型数组的结构,如下所示:

type APIResonse struct {
length int
data []interface{}
}

我希望 data 属性能够保存任何类型/结构的数组,这样我就可以有一个单一的响应类型,最终将被序列化为 json。所以我希望能够写出如下内容:

someStruct := getSomeStructArray()
res := &APIResponse{
length: len(someStruct),
data: someStruct,
}
enc, err := json.Marshal(res)

这在 Go 中可能吗?我不断收到 cannot use cs (type SomeType) as type []interface {} in assignment。还是我必须为每种数据变体创建不同的响应类型?或者也许我完全错误地解决了这个问题/不像 Go。任何帮助将不胜感激!

最佳答案

该代码有几个问题。

你需要使用interface{},而不是[]interface{},还有[]叫做 slice ,数组是固定数量的元素,例如 [10]string

并且您的 APIResponse 字段未导出,因此 json.Marshal 不会打印出任何内容。

func main() {
d := []dummy{{100}, {200}}
res := &APIResponse{
Length: len(d),
Data: d,
}
enc, err := json.Marshal(res)
fmt.Println(string(enc), err)
}

playground

关于json - Golang API 响应的 Catchall 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24747162/

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