ioutil.ReadAll()报错unexpected EOF

本文探讨了在遇到I/O错误或EOF时如何正确处理读取操作,特别是通过ReadAll函数读取数据并将其转换为YAML格式。文章详细解释了在读取过程中可能遇到的unexpected EOF错误及其解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决方法:

当Read在成功读取n >字节后遇到错误或EOF(文件结束)时,它返回所读取的字节数。通常,如果从输入源的末端读取返回的n = len§字节,阅读器将返回一个非零字节数n。Read可以返回err == EOF或err == nil。然后Read()应该返回(n:0, err:EOF)。调用者在考虑错误之前应该先处理返回的数据。这样做可以正确处理在读取一些字节后发生的I/O错误,同时允许EOF发生。

	//ReadAll从r开始读取,直到出现错误或EOF,并返回所读取的数据。
	responseByte, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		if strings.Contains(err.Error(), "unexpected EOF") && len(responseByte) != 0 {
			logrus.Printf("when read response: %s, will parse to YAML's []byte.", err.Error())
			goto pars
		}
		return err
	}

pars:
	butes, err := yaml.JSONToYAML(responseByte)
	fmt.Println("butes",butes)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值