Golang API响应的Catchall类型

I am trying to define a struct that can hold an array of any type like so:

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

I want the data property to be capable of holding an array of any type/struct so I can have a single response type, that will eventually be serialized to json. So what I want to be able to write is something like the following:

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

Is this possible in Go? I keep getting cannot use cs (type SomeType) as type []interface {} in assignment. Or do I have to create a different response type for every variation of data? Or maybe I am going about this wrong entirely / not Go-like. Any help would be much appreciated!

There are a couple of problems with that code.

You need to use interface{}, not []interface{}, also [] is called a slice, an array is a fixed number of elements like [10]string.

And your APIResponse fields aren't exported, so json.Marshal will not print out anything.

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

playground