首页 > 其他 > 详细

golang接口

时间:2019-04-26 19:07:37      阅读:118      评论:0      收藏:0      [点我收藏+]

golang接口:实现多态

1.接口的定义(使用者)

技术分享图片
package main

import (
    "fmt"
    "learngo/myinterface/mooc"
    "learngo/myinterface/real"
)

//實現者
type Retriever interface {
    Get(url string) string
}

//使用者
func download(r Retriever) string{
    return r.Get("http://www.imooc.com")
}

func main() {
    var r Retriever //Get方法的主人是誰
    r = mooc.Retriever{"asasass"}
    i := download(r)
    fmt.Println(i)

    fmt.Println("+++++++++++++++++++++++++++++++++++++")
    r = real.Retriever{}
    i = download(r)
    fmt.Println(i)

}
View Code

2.接口的实现者1

技术分享图片
package mooc

type Retriever struct {
    Content string
}

func (r Retriever) Get(url string)  string{
    return r.Content
}
View Code

3.接口的实现者2

技术分享图片
package real

import (
    "time"
    "net/http"
    "net/http/httputil"
)

type Retriever struct {
    Agent string
    Timeout time.Duration
}

func (r Retriever) Get(url string) string {
    resp, err := http.Get(url)
    defer resp.Body.Close()
    if err != nil {
        panic(err)
    }

    result, err := httputil.DumpResponse(resp, true)
    if err != nil {
        panic(err)
    }
    return string(result)
}
View Code

 

golang接口

原文:https://www.cnblogs.com/xingyunshizhe/p/10775891.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!