码迷,mamicode.com
首页 > 其他好文 > 详细

go_接口

时间:2018-03-13 01:02:35      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:util   log   highlight   http   pac   main函数   ati   use   慕课   

duck typeing 

隐式的实现接口的方法就等于实现了接口

 

main函数

package main

import (
	"fmt"
	"learngo/retriever/mock"
	"learngo/retriever/real"
)

func main(){
	var r Retriever
	r = mock.Retriever{"this is fyf"}
	r = real.Retriever{}
	fmt.Println(download(r))
}
//interface中的函数不用加func
type Retriever interface {
	Get(url string) string
}

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

  实现接口一

package mock

type Retriever struct {
	Contents string
}

//go语言中实现了Get(url string),就被认为实现了Retriever接口
func (r Retriever) Get(url string) string {
	return r.Contents
}

  实现接口二(拿下慕课网首页)

package real

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

type Retriever struct {
	UserAgent string
	TimeOut time.Duration
}

func (r Retriever) Get(url string) string {
	resp , err :=http.Get(url)
	if err != nil{
		panic(err)
	}
	result,err := httputil.DumpResponse(resp,true)
	resp.Body.Close()
	if err != nil {
		panic(err)
	}
	return string(result)
}

  

go_接口

标签:util   log   highlight   http   pac   main函数   ati   use   慕课   

原文地址:https://www.cnblogs.com/luffe/p/8552408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!