前提・実現したいこと
Golangのエラーハンドリングの基礎についてです。
httpのリクエストについて勉強しているのですが、以下のようなエラー処理の記述が出てきました。
Go
1file, err := fileHeader.Open() 2 if err == nil { 3 data, err := ioutil.ReadAll(file) 4 if err == nil { 5 fmt.Fprintln(w, string(data)) 6 } 7 }
僕の認識があっているのかわからないので教えていただきたいです。
file, err := fileHeader.Open()について
file := fileHeader.Open()と、この変数のerrを表す。
errは以下の型で示されている。
Go
1type error interface { 2 Error() string 3}
2行目のif err == nilについて
errがnilであるということはfileHeader.Openがnil、つまり中身がない場合を指定しているのでしょうか。
3行目以降のエラー処理について
上記と同様の考え方でよろしいでしょうか。
エラーがどのように処理されているのか考えているうちによくわからなくなっているので、エラー処理の解説をよろしくお願いします。
元のソースコードは以下です。
###ソースコード全体
Go
1package main 2 3import ( 4 "fmt" 5 "io/ioutil" 6 "net/http" 7) 8 9func process(w http.ResponseWriter, r *http.Request) { 10 r.ParseMultipartForm(1024) 11 fileHeader := r.MultipartForm.File["uploaded"][0] 12 file, err := fileHeader.Open() 13 if err == nil { 14 data, err := ioutil.ReadAll(file) 15 if err == nil { 16 fmt.Fprintln(w, string(data)) 17 } 18 } 19} 20 21func main() { 22 server := http.Server{ 23 Addr: "127.0.0.1:8080", 24 } 25 http.HandleFunc("/process", process) 26 server.ListenAndServe() 27} 28
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/03 05:52