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

http: panic serving [::1]:58965: runtime error:

http: panic serving [::1]:58965: runtime error:

Go
牛魔王的故事 2023-01-03 13:52:47
初学者,尝试创建一个读取 CSV 文件的简单应用程序。但是我认为我对错误的处理不当导致我的应用程序在我到达路径时失败。我的代码:package handlersimport (    "fmt"    "net/http"    "os"    "github.com/gocarina/gocsv")type Client struct {    origin      string `csv:"origin"`    destination string `csv:"destination"`    flight_num string `csv:"flight_num"`    origin_latitude  float32 `csv:"origin_latitude"`    origin_longitude float32 `csv:"origin_longitude"`    destination_latitude  float32 `csv:"destination_latitude"`    destination_longitude float32 `csv:"destination_longitude"`}func (s *Server) getWeather(w http.ResponseWriter, r *http.Request) {    in, err := os.Open("data.csv")    if err != nil {        w.WriteHeader(http.StatusInternalServerError)    }    defer in.Close()    clients := []*Client{}    if err = gocsv.UnmarshalFile(in, &clients); err != nil {        w.WriteHeader(http.StatusInternalServerError)    }    for _, client := range clients {        fmt.Println("Hello, ", client.origin)    }}从我在网上读到的内容来看,似乎是对错误的处理不当?想知道我该如何解决这个问题以及我做错了什么。
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

您的代码中有更多错误:


如果err == nil您提供 HTTP 500,但没有返回,那么代码会运行。如果发生错误则返回。


if err != nil {

    w.WriteHeader(http.StatusInternalServerError)

    return

}

在您的结构中,您必须以大写字母开头您的字段。您可以通过go将其名称的首字母大写来导出(公开)字段。


type Client struct {

    Origin      string `csv:"origin"`

    Destination string `csv:"destination"`

    ...

}


查看完整回答
反对 回复 2023-01-03
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

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