Golang 特征属性之 Interface

 Purpose of Interfaces

 

 

 

 Problems without Interfaces

package main

import "fmt"

type bot interface {
	getGreeting() string
}

type englishBot struct{}
type spanishBot struct{}

func main() {
	eb := englishBot{}
	sb := spanishBot{}

	printGreeting(eb)
	printGreeting(sb)

}

func printGreeting(b bot) {
	fmt.Println(b.getGreeting())
}

func (englishBot) getGreeting() string {
	// VERY custom logic for generating an english greeting
	return "Hi There!"
}

func (spanishBot) getGreeting() string {
	return "Hola!"
}

Interfaces in Practice

Rules of Interfaces

 

 

Extra Interface Notes

The HTTP Package

package main

import (
	"fmt"
	"net/http"
	"os"
)

func main() {
	resp, err := http.Get("http://www.baidu.com/")
	if err != nil {
		fmt.Println("Error", err)
		os.Exit(1)
	}

	fmt.Println(resp)
}

More Interface Syntax

Interface Review

The Reader Interface

 

 

 

More on the Reader Interface

Working with the Read Function

package main

import (
	"fmt"
	"net/http"
	"os"
)

func main() {
	resp, err := http.Get("http://www.baidu.com/")
	if err != nil {
		fmt.Println("Error", err)
		os.Exit(1)
	}

	bs := make([]byte, 999999)
	resp.Body.Read(bs)
	fmt.Println(string(bs))

}
PS E:\software\golang\goprojects\goproject1\HTTP> go run main.go
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta content="always" name="referrer"><meta name="theme-color" content="#ffffff"><meta name="description" content="全球领先的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求。百度超过千亿的中文网页数据库,可以瞬间找到相关的搜索结果。"><link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /><link rel="search" type="application/opensearchdescription+xml" href="/content-search.xml" title="百度搜索" /><link rel="icon" sizes="any" mask href="//www.baidu.com/img/baidu_85beaf5496f291521eb75ba38eacbd87.svg"><link rel="dns-prefetch" href="//dss0.bdstatic.com"/><link rel="dns-prefetch" href="//dss1.bdstatic.com"/><link rel="dns-prefetch" href="//ss1.bdstatic.com"/><link rel="dns-prefetch" href="//sp0.baidu.com"/><link rel="dns-prefetch" href="//sp1.baidu.com"/><link rel="dns-prefetch" href="//sp2.baidu.com"/><link rel="apple-touch-icon-precomposed" href="https://psstatic.cdn.bcebos.com/video/wiseindex/aa6eef91f8b5b1a33b454c401_1660835115000.png"><title>百度一下,你就知道</title><style index="newi" type="text/css">#form .bdsug{top:39px}.bdsug{display:none;position:absolute;width:535px;background:#fff;border:1px solid #ccc!important;_overflow:hidden;box-shadow:1px 1px 3px #ededed;-webkit-box-shadow:1px 1px 3px #ededed;-moz-box-shadow:1px 1px 3px #ededed;-o-box-shadow:1px 1px 3px #ededed}.bdsug li{width:519px;color:#000;font:14px arial;line-height:25px;padding:0 8px;position:relative;cursor:default}.bdsug li.bdsug-s{background:#f0f0f0}.bdsug-store span,.bdsug-store b{color:#7A77C8}.bdsug-store-del{font-size:12px;color:#666;text-decoration:underline;position:absolute;right:8px;top:0;cursor:pointer;display:none}.bdsug-s .bdsug-store-del{display:inline-block}.bdsug-ala{display:inline-block;border-bottom:1px solid #e6e6e6}.bdsug-ala h3{line-height:14px;background:url(//www.baidu.com/img/sug_bd.png?v=09816787.png) no-repeat left center;margin:6px 0 4px;font-size:12px;font-weight:400;color:#7B7B7B;padding-left:20px}.bdsug-ala p{font-size:14px;font-weight:700;padding-left:20px}#m .bdsug .bdsug-direct p{color:#00c;font-weight:700;line-height:34px;padding:0 8px;margin-top:0;cursor:pointer;white-space:nowrap;overflow:hidden}#m .bdsug .bdsug-direct p img{width:16px;height:16px;margin:7px 6px 9px 0;vertical-align:middle}#m .bdsug .bdsug-direct p span{margin-left:8px}#form .bdsug .bdsug-direct{width:auto;padding:0;border-bottom:1px solid #f1f1f1}#form .bdsug .bdsug-direct p i{font-size:12px;line-height:100%;font-style:normal;font-weight:400;color:#fff;background-color:#2b99ff;display:inline;text-align:center;padding:1px 5px;*padding:2px 5px 0;margin-left:8px;overflow:hidden}.bdsug .bdsug-pcDirect{color:#000;font-size:14px;line-height:30px;height:30px;background-color:#f8f8f8}.bdsug .bdsug-pc-direct-tip{position:absolute;right:15px;top:8px;width:55px;height:15px;display:block;background:url(http://pss.bdstatic.com/r/www/cache/static/global/img/pc_direct_42d6311.png) no-repeat 0 0}.bdsug li.bdsug-pcDirect-s{background-color:#f0f0f0}.bdsug .bdsug-pcDirect-is{color:#000;font-size:14px;line-height:22px;background-color:#f5f5f5}.bdsug .bdsug-pc-direct-tip-is{position:absolute;right:15px;top:3px;width:55px;height:15px;display:block;background:url(http://pss.bdstatic.com/r/www/cache/static/global/img/pc_direct_42d6311.png) no-repeat 0 0}.bdsug li.bdsug-pcDirect-is-s{background-color:#f0f0f0}.bdsug .bdsug-pcDirect-s .bdsug-pc-direct-tip,.bdsug .bdsug-pcDirect-is-s .bdsug-pc-direct-tip-is{background-position:0 -15px}.bdsug .bdsug-newicon{color:#929292;opacity:.7;font-size:12px;display:inline-block;line-height:22px;letter-spacing:2px}.bdsug .bdsug-s .bdsug-newicon{opacity:1}.bdsug .bdsug-newicon i{letter-spacing:0;font-style:normal}.bdsug .bdsug-feedback-wrap{display:none}.toggle-underline{text-decoration:none}.toggle-underline:hover{text-decoration:underline}.bdpfmenu,.usermenu{border:1px solid #d1d1d1;position:absolute;width:105px;top:36px;z-index:302;box-shadow:1px 1px 5px #d1d1d1;-webkit-box-shadow:1px 1px 5px #d1d1d1;-moz-box-shadow:1px 1px 5px #d1d1d1;-o-box-shadow:1px 1px 5px #d1d1d1}.bdpfmenu{font-size:12px;background-color:#fff}.bdpfmenu a,.usermenu a{display:block;text-align:left;margin:0!important;padding:0 9px;line-height:26px;text-decoration:none}.briiconsbg{background-repeat:no-repeat;background-size:300px 18px;background-image:url(http://pss.bdstatic.com/r/www/cache/static/home/img/icons_0c37e9b.png);background-image:url(http://pss.bdstatic.com/r/www/cache/static/home/img/icons_809ae65.gif)\9}.bdpfmenu a:link,.bdpfmenu a:visited,#u .usermenu a:link,#u .usermenu a:visited{background:#fff;color:#333}.bdpfmenu a:hover,.bdpfmenu a:active,#u .usermenu a:hover,#u .usermenu a:active{background:#38f;text-decoration:none;color:#fff}.bdpfmenu{width:70px}#wrapper .bdnuarrow{width:0;height:0;font-size:0;line-height:0;display:block;position:absolute;top:-10px;left:50%;margin-left:-5px}#wrapper .bdnuarrow em,#wrapper .bdnuarrow i{width:0;height:0;font-size:0;line-height:0;display:block;position:absolute;border:5px solid transparent;border-style:dashed dashed solid}#wrapper .bdnuarrow em{border-bottom-color:#d8d8d8;top:-1px}#wrapper .bdnuarrow i{border-bottom-color:#fff;top:0}#gxszHead .prefpanelclose{cursor:pointer;width:16px;height:16px;float:right;margin-top:7px;background-position:-248px 0}#gxszHead .prefpanelclose:hover{background-position:-264px 0}.s_ipt::-webkit-input-placeholder{padding-left:3px;color:#aaa;font-size:13px}.s_ipt::-moz-placeholder{padding-left:3px;color:#aaa;font-size:13px}.s_ipt:-ms-input-placeholder{padding-left:3px;color:#aaa;font-size:13px}.s_ipt::placeholder{padding-left:3px;color:#aaa;font-size:13px}.kw-placeholder{position:absolute;top:0;left:0;color:#aaa;font-size:13px;height:40px;line-height:40px;padding-left:10px;max-width:360px;z-index:99;pointer-events:none}.kw-placeholder.kw-placehlder-high{height:40px;line-height:40px}.kw-placeholder.placeholders-hidden{visibility:hidden}#head_wrapper #form .bdsug-new{width:544px;top:35px;border-radius:0 0 10px 10px;border:2px solid #4E6EF2!important;border-top:0!important;box-shadow:none;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif;z-index:1}#head_wrapper.sam_head_wrapper2 #form .bdsug-new{width:545px;z-index:1;border:1px solid #4E6EF2!important;border-top:0!important}#head_wrapper #form .bdsug-new ul{margin:7px 14px 0;padding:8px 0 7px;background:0 0;border-top:2px solid #f5f5f6}#head_wrapper #form .bdsug-new ul li{width:auto;padding-left:14px;margin-left:-14px;margin-right:-14px;color:#626675;line-height:28px;background:0 0;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif}#head_wrapper #form .bdsug-new ul li span{color:#626675}#head_wrapper #form .bdsug-new ul li b{font-weight:400;color:#222}#head_wrapper #form .bdsug-new .bdsug-store-del{font-size:13px;text-decoration:none;color:#9195A3;right:16px}#head_wrapper #form .bdsug-new .bdsug-store-del:hover{color:#315EFB;cursor:pointer}#head_wrapper #form .bdsug-new ul li:hover,#head_wrapper #form .bdsug-new ul li:hover span,#head_wrapper #form .bdsug-new ul li:hover b{cursor:pointer}.wrapper_new #form .bdsug-new .bdsug-s{background-color:#F5F5F6!important}.wrapper_new #form .sam_search .bdsug-new .bdsug-s{background-color:#F1F3FD!important}#head_wrapper #form .sam_search .bdsug-new .bdsug-s{background-color:#F1F3FD!important}#head .s-down #form .bdsug-new{top:32px}.s-skin-hasbg #head_wrapper #form .bdsug-new{border-color:#4569ff!important;border-top:0!important}.s-skin-hasbg #head_wrapper.s-down #form .bdsug-new{border-color:#4e6ef2!important;border-top:0!important}.s-skin-hasbg #head_wrapper.s-down #form.sam_search .bdsug-new{border-color:rgba(0,0,0,.05)!important;border-top:1px solid rgba(0,0,0,.05)!important;top:54px!important}#head_wrapper #form .bdsug-new 
.bdsug-s,#head_wrapper #form .bdsug-new .bdsug-s span,#head_wrapper #form .bdsug-new .bdsug-s b{color:#315EFB}#head_wrapper #form .bdsug-new>div span:hover,#head_wrapper #form .bdsug-new>div a:hover{color:#315EFB!important}#head_wrapper #form #kw.new-ipt-focus{border-color:#4e6ef2}#head_wrapper.s-down #form .sam-bdsug.bdsug-new{top:52px}#head_wrapper #form .sam-bdsug.bdsug-new{width:100%;box-shadow:0 4px 4px 0 rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.05)!important;border-radius:12px;top:56px}#head_wrapper #form .sam-bdsug.bdsug-new ul{border:0;padding:0 0 7px}#head_wrapper #form .sam-bdsug.bdsug-new ul li{line-height:32px}#head_wrapper #form .sam-bdsug.bdsug-new ul .bdsug-s{background-color:#F1F3FD!important}#head_wrapper #form .sam-bdsug.bdsug-new .bdsug-store-del{right:15px}.sam_search .sam_search_rec,.sam_search .sam_search_soutu{z-index:1;display:none;position:absolute;top:50%;margin-top:-12px;font-size:24px;color:#4E6EF2;height:24px;line-height:24px;width:24px;cursor:pointer;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);transition:transform .3s ease}.sam_search .sam_search_rec{right:54px}.sam_search .sam_search_soutu{right:14px}.sam_search .sam_search_rec:hover,.sam_search .sam_search_soutu:hover{color:#1D4FFF!important;transform:scale(1.08,1.08)}.sam_search .sam_search_rec_hover,.sam_search .sam_search_soutu_hover{background:#626675;border-radius:8px;height:32px;width:76px;text-align:center;line-height:32px;font-size:13px;color:#FFF;position:absolute;z-index:2;top:50px}.sam_search .sam_search_rec_hover:before,.sam_search .sam_search_soutu_hover:before{content:'';border:4px solid transparent;border-bottom:4px solid #626675;position:absolute;left:50%;top:-8px;margin-left:-4px}.sam_search .sam_search_rec_hover{right:29px}.sam_search .sam_search_soutu_hover{display:none;right:-12px}</style><style type="text/css" index="superbase">blockquote,body,button,dd,dl,dt,fieldset,form,h1,h2,h3,h4,h5,h6,hr,input,legend,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0}
html{color:#000;overflow-y:scroll;overflow:-moz-scrollbars}
body,button,input,select,textarea{font-size:12px;font-family:Arial,sans-serif}
h1,h2,h3,h4,h5,h6{font-size:100%}
em{font-style:normal}
small{font-size:12px}
ol,ul{list-style:none}
a{text-decoration:none}
a:hover{text-decoration:underline}
legend{color:#000}
fieldset,img{border:0}
button,input,select,textarea{font-size:100%}
table{border-collapse:collapse;border-spacing:0}
img{-ms-interpolation-mode:bicubic}
textarea{resize:vertical}
.left{float:left}
.right{float:right}
.overflow{overflow:hidden}
.hide{display:none}
.block{display:block}
.inline{display:inline}
.error{color:red;font-size:12px}
button,label{cursor:pointer}
.clearfix:after{content:'\20';display:block;height:0;clear:both}
.clearfix{zoom:1}
.clear{clear:both;height:0;line-height:0;font-size:0;visibility:hidden;overflow:hidden}
.wordwrap{word-break:break-all;word-wrap:break-word}
.s-yahei{font-family:arial,'Microsoft Yahei','微软雅黑'}
pre.wordwrap{white-space:pre-wrap}
body{text-align:center;background:#fff}
body,form{position:relative;z-index:0}
td{text-align:left}
img{border:0}
#s_wrap{position:relative;z-index:0;min-width:1000px}
#wrapper{height:100%}
#head .s-ps-islite{_padding-bottom:370px}
#head_wrapper.s-ps-islite{padding-bottom:370px}
#head_wrapper.s-ps-islite #s_lm_wrap{bottom:298px;background:0 0!important;filter:none!important}
#head_wrapper.s-ps-islite .s_form{position:relative;z-index:1}
#head_wrapper.s-ps-islite .fm{position:absolute;bottom:0}
#head_wrapper.s-ps-islite .s-p-top{position:absolute;bottom:40px;width:100%;height:181px}
#head_wrapper.s-ps-islite #s_lg_img,#head_wrapper.s-ps-islite #s_lg_img_aging,#head_wrapper.s-ps-islite #s_lg_img_new{position:static;margin:33px auto 0 auto}
.s_lm_hide{display:none!important}
#head_wrapper.s-down #s_lm_wrap{display:none}
.s-lite-version #m{padding-top:125px}
#s_lg_img,#s_lg_img_aging,#s_lg_img_new{position:absolute;bottom:10px;left:50%;margin-left:-135px}
#form{z-index:1}
#s_lm_wrap{position:absolute;margin-left:-447px;bottom:0;left:50%;z-index:0;height:30px;width:895px;line-height:30px;text-align:center}
.s-skin-hasbg #s_lm_wrap{background:0 0;background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.3)));background-image:-moz-linear-gradient(rgba(0,0,0,.3) 0,rgba(0,0,0,.3) 100%);background-image:-ms-linear-gradient(rgba(0,0,0,.3) 0,rgba(0,0,0,.3) 100%);background-image:-o-linear-gradient(rgba(0,0,0,.3) 0,rgba(0,0,0,.3) 100%);background-image:linear-gradient(rgba(0,0,0,.3) 
0,rgba(0,0,0,.3) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#66000000, endColorstr=#66000000)}
#s_lm_wrap.s-down{display:none}
#lm{color:#666;height:15px;line-height:16px;padding:7px 0}
#lm a{text-decoration:underline;color:#666}
#nv{margin:0 0 5px;_margin-bottom:4px;padding:2px 0 0;text-align:left;text-indent:50px}
#nv a,#nv b{margin-left:19px}
#lk,#nv a,#nv b,.btn{font-size:14px}
.s-down .s_form{padding-left:0;margin-top:0;min-height:0}
.s_form .tools{position:absolute;right:-55px}
.s_form_wrapper{height:100%}
#head_wrapper.s-down #mCon span{color:#000}
#lk{margin:33px 0}
#lk span{font:14px "\5b8b\4f53"}
#lh{margin:16px 0 5px;word-spacing:3px}
#mCon{height:15px;line-height:15px;width:28px;padding:10px 8px 0 0;cursor:pointer;background:url('http://ss.bdimg.com/static/superman/img/spis7-d578e7ff4b.png') no-repeat -684px -605px}
#mCon span{color:#333;cursor:default;display:block}
#mCon .hw{text-decoration:underline;cursor:pointer}
#mMenu{width:56px;border:1px solid #9b9b9b;list-style:none;position:absolute;right:-9px;top:30px;display:none;background:#fff;box-shadow:1px 1px 2px #ccc;-moz-box-shadow:1px 1px 2px #ccc;-webkit-box-shadow:1px 1px 2px #ccc;filter:progid:DXImageTransform.Microsoft.Shadow(Strength=2, Direction=135, Color="#cccccc")\9}
#mMenu a,#mMenu a:visited{color:#00c;width:100%;height:100%;display:block;line-height:22px;text-indent:6px;text-decoration:none;filter:none\9}
#mMenu a:hover{background:#ebebeb}
#mMenu .ln{height:1px;background:#ebebeb;overflow:hidden;font-size:1px;line-height:1px;margin-top:-1px}
#cp,#cp a{color:#77c}
#tb_mr{color:#00c;cursor:pointer;position:relative;z-index:200}
#tb_mr b{font-weight:400}
#nv a,#tb_mr b{text-decoration:underline}
#nv a{color:#00c}
#hwr_div,#loading{z-index:3000}
.bd_bear_home{display:none}
#mHolder{display:none}
#mHolder .c-icon{right:0;top:0;position:absolute;float:right;width:15px;height:15px}
.main{display:none}
#s_feed{display:none}
.s-ps-sug{border:1px solid #ccc!important;box-shadow:1px 1px 3px #ededed;-webkit-box-shadow:1px 1px 3px #ededed;-moz-box-shadow:1px 1px 3px #ededed;-o-box-shadow:1px 1px 3px #ededed;position:absolute;top:32px;left:0}
.s-ps-sug table{width:100%;background:#fff;cursor:default}
.s-ps-sug td{color:#000;font:14px arial;height:25px;line-height:25px;padding:0 8px}
.s-ps-sug td b{color:#000}
.s-ps-sug .mo{background:#ebebeb;cursor:pointer}
.s-ps-sug .ml{background:#fff}
.s-ps-sug td.sug_storage{color:#7a77c8}
.s-ps-sug td.sug_storage b{color:#7a77c8}
.s-ps-sug .sug_del{font-size:12px;color:#666;text-decoration:underline;float:right;cursor:pointer;display:none}
.s-ps-sug .sug_del{font-size:12px;color:#666;text-decoration:underline;float:right;cursor:pointer;display:none}
.s-ps-sug .mo .sug_del{display:block}
.s-ps-sug .sug_ala{border-bottom:1px solid #e6e6e6}
.s-ps-sug td h3{line-height:14px;margin:6px 0 4px 0;font-size:12px;font-weight:400;color:#7b7b7b;padding-left:20px;background:url(img/sug_bd.png) no-repeat left center}
.s-ps-sug td p{font-size:14px;font-weight:700;padding-left:20px}
.s-ps-sug td p span{font-size:12px;font-weight:400;color:#7b7b7b}
#s_user_center{font-weight:400;background-position:right -223px\9}
#s_user_center_menu{right:131px}
.s-ps-islite #nv{padding-top:22px;line-height:16px;height:16px;margin-bottom:13px}
#form .bdsug .bdsug-direct{width:auto;padding:0;border-bottom:1px solid #f1f1f1}
#head_wrapper .bdsug .bdsug-direct p{color:#00c;font-weight:700;line-height:34px;padding:0 8px;margin-top:0;cursor:pointer;white-space:nowrap;overflow:hidden}
#head_wrapper .bdsug .bdsug-direct p img{width:16px;height:16px;margin:7px 6px 9px 0;vertical-align:middle}
#head_wrapper .bdsug .bdsug-direct p span{margin-left:8px}
#head_wrapper .bdsug .bdsug-direct p i{font-size:12px;line-height:100%;font-style:normal;font-weight:400;color:#fff;background-color:#2b99ff;display:inline;text-align:center;padding:1px 5px;*padding:2px 5px 0 5px;margin-left:8px;overflow:hidden}
#result_logo,#s_tab,#u,#wrapper_wrapper{display:none}
#prefpanel{background:#fafafa;display:none;opacity:0;position:fixed;_position:absolute;top:-359px;z-index:500;width:100%;min-width:960px;border-bottom:1px solid #ebebeb;*left:0!important;text-align:left}     
#prefpanel form{_width:850px}
@font-face{font-family:cIconfont;src:url('http://ss.bdimg.com/static/superman/font/iconfont-6cd8195b5f.eot');src:url('http://ss.bdimg.com/static/superman/font/iconfont-6cd8195b5f.eot?#iefix') format('embedded-opentype'),url('http://ss.bdimg.com/static/superman/font/iconfont-aec5c5621f.woff2') format('woff2'),url('http://ss.bdimg.com/static/superman/font/iconfont-b525a67cbf.woff') format('woff'),url('http://ss.bdimg.com/static/superman/font/iconfont-e5b5d1cf2c.ttf') format('truetype'),url('http://ss.bdimg.com/static/superman/font/iconfont-15ad208408.svg#iconfont') format('svg')}
.c-gap-top-small{margin-top:3px}
.c-gap-top{margin-top:7px}
.c-gap-top-large{margin-top:11px}
.c-gap-top-mini{margin-top:2px}
.c-gap-top-xsmall{margin-top:4px}
.c-gap-top-middle{margin-top:10px}
.c-gap-bottom-small{margin-bottom:3px}
.c-gap-bottom{margin-bottom:7px}
.c-gap-bottom-large{margin-bottom:11px}
.c-gap-bottom-mini{margin-bottom:2px}
.c-gap-bottom-xsmall{margin-bottom:4px}
.c-gap-bottom-middle{margin-bottom:10px}
.c-gap-left{margin-left:12px}
.c-gap-left-small{margin-left:8px}
.c-gap-left-xsmall{margin-left:4px}
.c-gap-left-mini{margin-left:2px}
.c-gap-left-large{margin-left:16px}
.c-gap-left-middle{margin-left:10px}
.c-gap-right{margin-right:12px}
.c-gap-right-small{margin-right:8px}
.c-gap-right-xsmall{margin-right:4px}
.c-gap-right-mini{margin-right:2px}
.c-gap-right-large{margin-right:16px}
.c-gap-right-middle{margin-right:10px}
.c-gap-icon-right-small{margin-right:5px}
.c-gap-icon-right{margin-right:10px}
.c-gap-icon-left-small{margin-left:5px}
.c-gap-icon-left{margin-left:10px}
.c-row{*zoom:1}
.c-row:after{display:block;height:0;content:"";clear:both;visibility:hidden}
.c-span1{width:32px}
.c-span2{width:80px}
.c-span3{width:128px}
.c-span4{width:176px}
.c-span5{width:224px}
.c-span6{width:272px}
.c-span7{width:320px}
.c-span8{width:368px}
.c-span9{width:416px}
.c-span10{width:464px}
.c-span11{width:512px}
.c-span12{width:560px}
.c-span10,.c-span11,.c-span12,.c-span2,.c-span3,.c-span4,.c-span5,.c-span6,.c-span7,.c-span8,.c-span9{float:left;_display:inline;margin-right:16px;list-style:none}
.c-span-last{margin-right:0}
.c-span-last-s{margin-right:0}
.c-feed-box .c-span1{width:43px}
.c-feed-box .c-span2{width:90px}
.c-feed-box .c-span3{width:137px}
.c-feed-box .c-span4{width:184px}
.c-feed-box .c-span5{width:231px}
.c-feed-box .c-span6{width:278px}
.c-feed-box .c-span7{width:325px}
.c-feed-box .c-span8{width:372px}
.c-feed-box .c-span9{width:419px}
.c-feed-box .c-span10{width:466px}
.c-feed-box .c-span11{width:513px}
.c-feed-box .c-span12{width:560px}
.c-feed-box .c-span10,.c-feed-box .c-span11,.c-feed-box .c-span12,.c-feed-box .c-span2,.c-feed-box .c-span3,.c-feed-box .c-span4,.c-feed-box .c-span5,.c-feed-box .c-span6,.c-feed-box .c-span7,.c-feed-box .c-span8,.c-feed-box .c-span9{margin-right:4px}
.c-feed-box .c-span-last{margin-right:0}
.c-index{display:inline-block;width:14px;padding:1px 0;line-height:100%;text-align:center;color:#fff;background-color:#8eb9f5;font-size:12px}
.c-index-hot,.c-index-hot1{background-color:#f54545}
.c-index-hot2{background-color:#ff8547}
.c-index-hot3{background-color:#ffac38}
.c-index-single{display:inline-block;background:0 0;color:#9195a3;width:18px;font-size:15px;letter-spacing:-1px}
.c-index-single-hot,.c-index-single-hot1{color:#fe2d46}
.c-index-single-hot2{color:#f60}
.c-index-single-hot3{color:#faa90e}
.c-font-sigma{font:36px/60px Arial,sans-serif}
.c-font-large{font:20px/30px Arial,sans-serif}
.c-font-big{font:20px/30px Arial,sans-serif}
.c-font-special{font:16px/26px Arial,sans-serif}
.c-font-medium{font:14px/24px Arial,sans-serif}
.c-font-middle{font:14px/24px Arial,sans-serif}
.c-font-normal{font:13px/23px Arial,sans-serif}
.c-font-small{font:12px/20px Arial,sans-serif}
.c-font-family{font-family:Arial,sans-serif}
.c-color-t{color:#222}
.c-color-text{color:#333}
.c-color-gray{color:#626675}
.c-color-gray2{color:#9195a3}
.c-color-visited{color:#626675}
.c-color-orange{color:#fa4901}
.c-color-green{color:#0ebe90}
.c-color-ad{color:#77a9f9}
.c-color-red{color:#f63051}
.c-color-red:visited{color:#f63051}
.c-color-warn{color:#ff7900}
.c-color-warn:visited{color:#ff7900}
.c-color-link{color:#3951b3}
.c-btn,.c-btn:visited{color:#333!important}
.c-btn{display:inline-block;overflow:hidden;font-family:inherit;font-weight:400;text-align:center;vertical-align:middle;outline:0;border:0;height:30px;width:80px;line-height:30px;font-size:13px;border-radius:6px;padding:0;background-color:#f5f5f6;*zoom:1;cursor:pointer}
.c-btn:hover{background-col
PS E:\software\golang\goprojects\goproject1\HTTP>

The Writer Interface

package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	resp, err := http.Get("http://www.baidu.com/")
	if err != nil {
		fmt.Println("Error", err)
		os.Exit(1)
	}

	io.Copy(os.Stdout, resp.Body)

}

 

 

The io.Copy Function

The Implementation of io.Copy

A Custom Writer

package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

type logWriter struct {
}

func main() {
	resp, err := http.Get("http://www.baidu.com/")
	if err != nil {
		fmt.Println("Error", err)
		os.Exit(1)
	}

	lw := logWriter{}

	io.Copy(lw, resp.Body)

}

func (logWriter) Write(bs []byte) (int, error) {
	fmt.Println(string(bs))
	fmt.Println("Just wrote this many bytes:", len(bs))

	return len(bs), nil
}

Quiz 10: Test Your Knowledges: Interfaces

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值