> There is a "type" struct at the top, but then another struct without a type later on.
1) You not being familiar with anonymous types, does not make go complex. Anonymous types (var d struct) have been around for a _very_ long time.
> Then there's a nested struct, and then backticks with double quotes and json with colons - one with the backticks after float64, and the other after a brace.
2) Anonymous types and tagging. The tags are a convenient, orthogonal language feature.
> Then rather than returning the result of the json response with an equal sign, the json decoder line takes in both the response and the output as function parameters! And one of them has an ampersand in front?!
The json decoder in go works on structs by reference to improve speed. You'll need to understand passing by reference vs value to understand why this code is structured the way it is.
All three of these things are _simple_ features but they may not be easy to understand.
By the way the equivalent go code for the python you posted is actually:
d := make(map[string], interface{})
json.Unmarshal(resp.Body, d)
fmt.Println(d)