You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go调用data.gov.sg API报错及Go语言零基础学习资源咨询

代码问题修复

错误原因

  • 结构体定义与API返回结构不匹配:Response结构体中Hasil字段类型错误设置为string,实际API返回的result字段为嵌套对象,需要定义为Hasil结构体类型
  • 缺失标准库导入:代码用到的net/http、encoding/json、log等依赖包未显式导入
  • 缺少必要的资源处理与异常捕获:未关闭HTTP响应体存在资源泄漏风险,JSON解析的错误未捕获无法定位问题

修复后完整代码

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

type Response struct {
	Hasil Hasil `json:"result"`
}
type Hasil struct {
	Data []Data `json:"records"`
}
type Data struct {
	Jurusan string `json:"type_of_course"`
	Tahun   string `json:"year"`
}

func main() {
	response, err := http.Get("https://data.gov.sg/api/action/datastore_search?resource_id=eb8b932c-503c-41e7-b513-114cffbe2338")
	if err != nil {
		fmt.Print(err.Error())
		return
	}
	defer response.Body.Close()
	responseData, err := ioutil.ReadAll(response.Body)
	if err != nil {
		log.Fatal(err)
	}
	var responseObject Response
	err = json.Unmarshal(responseData, &responseObject)
	if err != nil {
		log.Fatalf("JSON解析失败: %v", err)
	}
	for _, item := range responseObject.Hasil.Data {
		fmt.Println(item.Jurusan)
	}
}
零基础Go语言学习资料推荐
  • 官方交互式入门教程:全程可在浏览器运行代码,不需要本地搭建环境,覆盖所有基础语法点,适合入门阶段快速上手
  • 《Go语言实战》:入门级经典书籍,内容由浅入深,配套大量可运行示例,覆盖从基础语法到并发编程的全流程知识点
  • 官方标准库文档:所有标准库的功能、用法都有详细说明和示例,是日常开发和学习过程中必备的参考资料
  • 国内开发者产出的入门专栏:内容贴合国内开发者学习习惯,会梳理大量新手常见坑点,适合搭配书籍同步学习

内容的提问来源于stack exchange,提问作者Panji Tri Wahyudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:24:04