1 回答
TA贡献1796条经验 获得超4个赞
根据我的评论,不要使用interface.
一个简单的struct就足够了:
type HealthChecker struct {
URL string
}
func (h HealthChecker) Check() error {
resp, err := http.Get(h.URL)
if err != nil {
return err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("got http status %d instead of %d", resp.StatusCode, http.StatusOK)
}
return nil
}
要使用:
ex := HealthChecker{"http://example.com/healthz"}
log.Println(ex.URL, ex.Check()) // http://example.com/healthz got http status 404 instead of 200
g := HealthChecker{"http://google.com/"}
log.Println(g.URL, g.Check()) // http://google.com/ <nil>
https://play.golang.org/p/ktb2xX7DHKI
- 1 回答
- 0 关注
- 117 浏览
添加回答
举报