package itface

type Sender interface {
Send(url string) string
} type Geter interface {
Get(url string ) string
} //组合接口
type Socket interface {
Sender
Geter
}

具体的实现struct中不必指定接口的名称,但却有一个要求:一个struct如果实现了某个接口,那么就必须实现接口中的所有方法

package itface

import "fmt"

type Client struct {
Count int
Contents string
} func (cc Client) Send(url string) string {
fmt.Println("send message")
return "ok"
} func (cc Client) Get(url string ) string { fmt.Println(cc.Contents)
return cc.Contents
}
package itface

import "fmt"

type Server struct {
Count int
Contents string
} //值复制方式,每次都是从初始化的值开始计算,没有高并发的问题
func (ss Server) Send(url string) string{
//ss.Count += 1
ss.setCount()
fmt.Println(ss.Count)
fmt.Println(ss.Contents)
return ss.Contents
} func (ss *Server) setCount(a int){
ss.Count += a
}
package main

import (
"fmt"
"study/itface"
) func test(str string){
var send itface.Sender
send = itface.Server{,str}
var url string
url = "www.baidu.com"
send.Send(url)
fmt.Println("第2次调用")
send.Send(url)
} func client(str string){
var client itface.Geter
client = itface.Client{,str}
client.Get("www.itoracle.cn")
} func socket(str string) {
var sk itface.Socket
sk = itface.Client{,str}
sk.Send("www.itoracle.cn")
} func main() {
test("不可能")
client("why?")
socket("bbb")
}

输出结果

不可能
第2次调用 不可能
why?
send message

2.4 GO Interface的更多相关文章

  1. angular2系列教程(七)Injectable、Promise、Interface、使用服务

    今天我们要讲的ng2的service这个概念,和ng1一样,service通常用于发送http请求,但其实你可以在里面封装任何你想封装的方法,有时候控制器之间的通讯也是依靠service来完成的,让我 ...

  2. 接口--interface

    “interface”(接口)关键字使抽象的概念更深入了一层.我们可将其想象为一个“纯”抽象类.它允许创建者规定一个类的基本形式:方法名.自变量列表以及返回类型,但不规定方法主体.接口也包含了基本数据 ...

  3. Configure a bridge interface over a VLAN tagged bonded interface

    SOLUTION VERIFIED February 5 2014 KB340153 Environment Red Hat Enterprise Linux 6 (All Versions) Red ...

  4. Create a bridge using a tagged vlan (8021.q) interface

    SOLUTION VERIFIED April 27 2013 KB26727 Environment Red Hat Enterprise Linux 5 Red Hat Enterprise Li ...

  5. Configure a bridged network interface for KVM using RHEL 5.4 or later?

    environment Red Hat Enterprise Linux 5.4 or later Red Hat Enterprise Linux 6.0 or later KVM virtual ...

  6. Set up VLAN (802.1q) tagging on a network interface?

    SOLUTION VERIFIED October 13 2015 KB39674 KB741413 environment Red Hat Enterprise Linux 4 Red Hat En ...

  7. 谨慎使用Marker Interface

    之所以写这篇文章,源自于组内的一些技术讨论.实际上,Effective Java的Item 37已经详细地讨论了Marker Interface.但是从整个Item的角度来看,其对于Marker In ...

  8. 浅析Go语言的Interface机制

    前几日一朋友在学GO,问了我一些interface机制的问题.试着解释发现自己也不是太清楚,所以今天下午特意查了资料和阅读GO的源码(基于go1.4),整理出了此文.如果有错误的地方还望指正. GO语 ...

  9. 如何设计一门语言(七)——闭包、lambda和interface

    人们都很喜欢讨论闭包这个概念.其实这个概念对于写代码来讲一点用都没有,写代码只需要掌握好lambda表达式和class+interface的语义就行了.基本上只有在写编译器和虚拟机的时候才需要管什么是 ...

  10. abstract与interface之房祖名张默版

    最近把java基础知识拿出来看看,看到abstract与interface的时候,觉得有点模糊,好像面试官也喜欢问这个问题.我在百度了查了好长时间,觉得讲算比较清楚的是那篇讲 Door,然后想要带个报 ...

随机推荐

  1. 类操作,removeClass&addClass

    // 添加类 function addClass(node,className){                 var reg=new RegExp("\\b"+classNa ...

  2. C#中GUID的生成格式(Guid.ToString方法 )

    GUID 是微软对UUID这个标准的实现.UUID是由开放软件基金会(OSF)定义的.UUID还有其它各种实现,不止GUID一种 public string ToString(     string  ...

  3. Request[]与Request.Params[] 差别

    Request[]与Request.Params[] ,这二个属性都可以让我们方便地根据一个KEY去[同时搜索]QueryString.Form.Cookies 或 ServerVariables这4 ...

  4. ASP.NET 5 Middleware, Or Where Has My HttpModule Gone?

    31 March 2015 13:22 ASP.NET 5 has been largely rewritten from the ground up, and incorporates some r ...

  5. 20169219 Nmap扫描实验

    提交用 namp 对Windows 靶机,SEED靶机,Linux靶机的扫描的命令和结果进行截图 一.首先分析Linux靶机Metasploitable 扫描Metasploitableb靶机 扫描M ...

  6. webrowser卡死解决方案

    webrowser 是由于有道词典造成 解决方案,关闭有道或卸载:

  7. 如何从Spring官网下载Spring的jar包

    Spring官网:https://spring.io/ 进入官网点击PRODECTS 然后点击Spring Framework 进入下面的页面点击小猫图标: 之后再下面的页面持续向下滚动,找到下图我标 ...

  8. jquery $.each()循环退出

    $.each()循环跳出,应该用return 来返回 在each代码块内不能使用break和continue,要实现break和continue的功能的话,要使用其它的方式:break----用ret ...

  9. CF1137E. Train Car Selection(可删堆)

    题面 三个操作 1.在当前数列最左端加入\(k\)个初始为\(0\)的数 2.在当前数列最右端加入\(k\)个初始为\(0\)的数 3.将当前数列从左到右第\(i\)个数加上\(b+(i-1)k(b& ...

  10. 洛谷P3236 [HNOI2014]画框(最小乘积KM)

    题面 传送门 题解 我似乎连\(KM\)都不会打啊→_→ 和bzoj2395是一样的,只不过把最小生成树换成\(KM\)了.因为\(KM\)跑的是最大权值所以取个反就行了 //minamoto #in ...