zoukankan      html  css  js  c++  java
  • golang接口

    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
  • 相关阅读:
    8.耍杂技的牛 推公式
    内联函数分析
    类的静态成员变量
    操作符重载的概念
    数组本质分析
    动态内存分配
    函数重载分析
    指针本质分析
    单引号和双引号
    内存操作经典问题分析
  • 原文地址:https://www.cnblogs.com/xingyunshizhe/p/10775891.html
Copyright © 2011-2022 走看看