mirror of
https://github.com/teivah/100-go-mistakes.git
synced 2026-06-20 16:45:56 +08:00
81 lines
1.3 KiB
Go
81 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
"log"
|
|
"net/http"
|
|
)
|
|
|
|
func (h handler) getBody1() (string, error) {
|
|
resp, err := h.client.Get(h.url)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
body, err := io.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return string(body), nil
|
|
}
|
|
|
|
func (h handler) getBody2() (string, error) {
|
|
resp, err := h.client.Get(h.url)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
body, err := io.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
defer func() {
|
|
err := resp.Body.Close()
|
|
if err != nil {
|
|
log.Printf("failed to close response: %v\n", err)
|
|
}
|
|
}()
|
|
|
|
return string(body), nil
|
|
}
|
|
|
|
func (h handler) getStatusCode1(body io.Reader) (int, error) {
|
|
resp, err := h.client.Post(h.url, "application/json", body)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
defer func() {
|
|
err := resp.Body.Close()
|
|
if err != nil {
|
|
log.Printf("failed to close response: %v\n", err)
|
|
}
|
|
}()
|
|
|
|
return resp.StatusCode, nil
|
|
}
|
|
|
|
func (h handler) getStatusCode2(body io.Reader) (int, error) {
|
|
resp, err := h.client.Post(h.url, "application/json", body)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
defer func() {
|
|
err := resp.Body.Close()
|
|
if err != nil {
|
|
log.Printf("failed to close response: %v\n", err)
|
|
}
|
|
}()
|
|
|
|
_, _ = io.Copy(io.Discard, resp.Body)
|
|
|
|
return resp.StatusCode, nil
|
|
}
|
|
|
|
type handler struct {
|
|
client http.Client
|
|
url string
|
|
}
|