我正在学习 Go(来自 Python)并且强制输入系统实际上很有帮助。我interface{}对以下代码的理解非常有限,我在其中从 API 检索 JSON 数据并返回解析后的版本。结果可以是一个对象或一个对象列表。
func getJsonFromApi(endpoint string) (reply interface{}, err error) {
res, err := http.Get("http://127.0.0.42/api/" + endpoint)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(res.Body)
err = res.Body.Close()
if err != nil {
return nil, err
}
err = json.Unmarshal(body, &reply)
return reply, nil
}
Run Code Online (Sandbox Code Playgroud)
它有效,但我因颠覆类型系统而感到不舒服。这是预期的用途interface{}吗?
我最终将更改代码以始终返回一个对象数组(并在我的第一个用例中获取第一个对象),但我对一般问题感到好奇。
go ×1