'Go json.Unmarshal does not work with type definition of json.RawMessage

I have a small Go program like this:

package main

import "encoding/json"

func main() {
    bs := []byte(`{"items": ["foo", "bar"]}`)

    data := Data{}
    err := json.Unmarshal(bs, &data)
    if err != nil {
        panic(err)
    }
}

type Data struct {
    Items []Raw `json:"items"`
}

// If I do this, this program panics with "illegal base64 data at input byte 0"
type Raw json.RawMessage

// This works
type Raw = json.RawMessage

Why does json.Unmarshal work with type alias but not type definition? What does that error message mean?

go


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source