为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这个程序可以在 liteIde 中运行,但从终端运行时会因无效的指针引用而崩溃?

为什么这个程序可以在 liteIde 中运行,但从终端运行时会因无效的指针引用而崩溃?

Go
三国纷争 2021-06-17 13:09:00
当我在 LiteIDE 中运行此代码时,通过 build 和 run 命令,它可以工作。但是当我运行它时go run scraper.go或者go build scraper.go ./scraper它在 r.Body.Close() 行中失败并出现错误panic: runtime error: invalid memory address or nil pointer dereference这是违规代码:r, err := http.Get(job.Url)  defer r.Body.Close() //same error with or without defer脚本在这里:https : //gist.github.com/meddulla/5934457但它基本上接受通过 post 请求抓取的 url,例如curl -X POST -d "[{\"url\": \"http://localhost:8888/IBTX/proj/dev/article.html\"}]" http://localhost:8080/jobs/add我不明白为什么它可以在 liteIde 中工作,但当我直接在终端中运行它时却不能(程序启动正常,所以它不是 GOPATH 设置或其他东西,它只在响应发布请求时失败)任何想法为什么?
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您首先需要检查 err 是否为零。


r, err := http.Get(job.Url) 

if err != nil {

  log.Fatal(err)

}

defer r.Body.Close() //same error with or without defer


查看完整回答
反对 回复 2021-06-21
  • 1 回答
  • 0 关注
  • 229 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信