初学者,尝试创建一个读取 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"`
...
}
- 1 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消