Hi,
Indeed, it looks like I forgot to document evolution of return types.
The parenthesized return list is handled the same as the parameter list. You can add new fields to the end, and you should give them default values. These parenthesized lists are actually converted into struct definitions behind the scenes, with the field numbers corresponding to the position of the parameters in the list.
When the parameters or the return type are *not* a parenthesized list, then they are required to name a struct type. In this case, that struct type is used directly, rather than auto-generating an anonymous struct type from the parenthesized list. So, you can convert a parenthesized list to a raw struct or vice versa by ensuring that the parenthesized list's members match the struct's fields.
You gave this example:
But this is not valid, because `Data` is not a struct type (also, there is a syntax error: there shouldn't be a colon before the type in this context).
-Kenton