Невозможно сделать что-либо столь же простое, как в Python, потому что Go строго типизирован, поэтому необходимо передать вашу цель в функцию unmarshal.
То, что вы написали, в противном случае можно было бы немного сократить,что-то вроде этого:
func UnmarshalJSONFile(path string, i interface{}) error {
f, err := os.Open(path)
if err != nil {
return err
}
defer f.Close()
return json.NewDecoder(f).Decode(i)
}
Но затем, чтобы использовать его, вы бы сделали это:
func main() {
data := Data{}
if err := UnmarshalJSONFile("/path/to/file.json", &data); err != nil {
panic(err)
}
}
Но вы можете видеть, что UnmarshalJSONFile
настолько прост, что вряд ли это оправдываетстандартная библиотечная функция.