go 采用duck typing 模式
实现一个接口是隐式的,只用实现接口对应的方法即可,所以只用使用者定义需要实现的方法即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
type Downloader interface { Get(url string) string }
type SimpleDownload struct { }
func (dl SimpleDownload) (url string) string { return "this is get " + url }
type RealDownload struct { }
func (dl RealDownload) (url string) string { resp, err := http.Get(url) if err != nil { panic(err) } defer resp.Body.Close() ret, err := httputil.DumpResponse(resp, true) if err != nil { panic(err) } return string(ret)
}
var dl Downloader dl = interfaces.SimpleDownload{} dl = interfaces.RealDownload{} fmt.Println(dl.Get("http://svz7.cn"))
|
近期评论