Skip to content

Instantly share code, notes, and snippets.

@fengb
Created May 22, 2019 15:51
Show Gist options
  • Save fengb/321f702396b26fa2f37be9b226f46250 to your computer and use it in GitHub Desktop.
Save fengb/321f702396b26fa2f37be9b226f46250 to your computer and use it in GitHub Desktop.
Go vs Zig error handling
func WriteResponse(w io.Writer, st Status, headers []Header, body io.Reader) error {
_, err := fmt.Fprintf(w, "HTTP/1.1 %d %s\r\n", st.Code, st.Reason)
if err != nil {
return err
}
for _, h := range headers {
_, err := fmt.Fprintf(w, "%s: %s\r\n", h.Key, h.Value)
if err != nil {
return err
}
}
if _, err := fmt.Fprint(w, "\r\n"); err != nil {
return err
}
_, err = io.Copy(w, body)
return err
}
pub fn writeResponse(w: io.Writer, st: Status, headers: []Header, body: io.Reader) !void {
try fmt.fprintf(w, "HTTP/1.1 %d %s\r\n", st.Code, st.Reason);
for (headers) |h| {
try fmt.fprintf(w, "%s: %s\r\n", h.Key, h.Value);
}
try fmt.fprint(w, "\r\n");
_ = try io.Copy(w, body);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment