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. 4.python 系统批量运维管理器之paramiko模块

    paramiko paramiko是ssh服务最经常使用的模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. paramiko实现ssh2不外乎两个角度:SSH客户端与服务端 SS ...

  2. 当鼠标悬停在链接上,或者点击过的链接,颜色会被设置为 #2a6496。同时,会呈现一条下划线。点击过的链接,会呈现一个颜色码为 #333 的细的虚线轮廓。另一条规则是设置轮廓为 5 像素宽,且对于基于 webkit 浏览器有一个 -webkit-focus-ring-color 的浏览器扩展。轮廓偏移设置为 -2 像素

    a:hover, a:focus { color: #2a6496; text-decoration: underline; } a:focus { outline: thin dotted #333 ...

  3. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(6):Spring IOC容器学习(概念、作用、Bean生命周期)

    一.IOC控制反转概念 控制反转(IOC)是一种通过描述(在Java中可以是XML或者是注解)并通过第三方去生产或获取特定对象的方式. 主动创建模式,责任在于开发者,而在被动模式下,责任归于Ioc容器 ...

  4. redis系列:基于redis的分布式锁

    一.介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁.会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁. 本篇文章会将分布式锁的实现分为两部分,一个是单机环境, ...

  5. Sort函数(C++)

    原创 C++中内置了sor函数供排序,函数原型为: #include<algorithm> //所属头文件 sort(begin,end,cmp); //其中cmp参数可以省略,省略后默认 ...

  6. vi常用快捷键汇总

      第一部分:光标移动.复制粘贴.查找替换 [Ctrl] + [f]  下一页 [Ctrl] + [b]  上一页  0或[home]  到行首 $或[end]  到行尾  G  到最后一行  gg ...

  7. EasyUI combobox实现下拉框多选遇坑记录

    场景一: 多选正常从第二个选项增加逗号,我选第一个的时候就冒出一个逗号 解决方案一: 这是因为当前的下拉框的值可能为undefined,需要手动清空一下 $("#id").comb ...

  8. 建造者(Builder)模式 *

    一. 建造者(Builder)模式 建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 二. Builder模式的结构: 建造者(Bu ...

  9. Setter

    这个还是比较好理解的. 设置器. 用法还是比较简单的. 语法特征: 设置属性[Property] 填充值[Value] 注意这个是封闭单行闭合标签,可以换行,但只允许在同一个标签闭合. 事例用法: & ...

  10. Atcoder Beginner Contest 121D(异或公式)

    #include<bits/stdc++.h>using namespace std;int main(){    long long a,b;    cin>>a>&g ...