猿问

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

初学者,尝试创建一个读取 CSV 文件的简单应用程序。但是我认为我对错误的处理不当导致我的应用程序在我到达路径时失败。


我的代码:


package handlers


import (

    "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)

    }

}

从我在网上读到的内容来看,似乎是对错误的处理不当?想知道我该如何解决这个问题以及我做错了什么。



牛魔王的故事
浏览 114回答 1
1回答

明月笑刀无情

您的代码中有更多错误:如果err == nil您提供 HTTP 500,但没有返回,那么代码会运行。如果发生错误则返回。if err != nil {    w.WriteHeader(http.StatusInternalServerError)    return}在您的结构中,您必须以大写字母开头您的字段。您可以通过go将其名称的首字母大写来导出(公开)字段。type Client struct {    Origin      string `csv:"origin"`    Destination string `csv:"destination"`    ...}
随时随地看视频慕课网APP

相关分类

Go
我要回答