二十、接口的应用示例(便于理解使用场景)
多云平台 或者不同平台的服务器信息 操作相同只是平台不同 就可以用接口来做
package mainimport ("fmt"
)type Cloud interface {GetHost() []HostStart(id string) errorStop(id string) errorDetil(id string) error
}type Host struct {name stringip string
}type AliCloud struct {api stringkey stringsecret string
}type TenCloud struct {api stringkey stringsecret string
}func NewAliCloud(api,key,secret string) AliCloud {return AliCloud{api,key,secret}
}func NewTenCloud(api,key,secret string) TenCloud {return TenCloud{api,key,secret}
}func (a AliCloud) GetHost() []Host{fmt.Println("Ali GetHost")return []Host{}
}func (a AliCloud) Start(id string) error{fmt.Println("Ali Start")return nil
}func (a AliCloud) Stop(id string) error{fmt.Println("Ali Stop")return nil
}func (a AliCloud) Detil(id string) error{fmt.Println("Ali Detil")return nil
}func (a TenCloud) GetHost() []Host{fmt.Println("Ten GetHost")return []Host{}
}func (a TenCloud) Start(id string) error{fmt.Println("Ten Start")return nil
}func (a TenCloud) Stop(id string) error{fmt.Println("Ten Stop")return nil
}func (a TenCloud) Detil(id string) error{fmt.Println("Ten Detil")return nil
}func GetCloud(cloudtype string) Cloud {var cloud Cloudif cloudtype == "ten" {cloud = NewTenCloud("a","b","c")}else if cloudtype == "ali" {cloud = NewAliCloud("a","b","c")}else {fmt.Println("err")}return cloud
}func main() {cloud := GetCloud("ten")
END:for {//多云平台就会用到接口 同种操作针对不同类型 可以复用var operator stringfmt.Print("请输入操作:")fmt.Scan(&operator)switch operator {case "1":cloud.GetHost()case "2":cloud.Start("1")case "3":cloud.Stop("2")case "4":cloud.Detil("3")case "5":break END}}
}
二十、接口的应用示例(便于理解使用场景)相关推荐
- 聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore
前几篇分析了一下AQS的原理和实现,这篇拿Semaphore信号量做例子看看AQS实际是如何使用的. Semaphore表示了一种可以同时有多个线程进入临界区的同步器,它维护了一个状态表示可用的票据, ...
- 【软件开发底层知识修炼】二十六 ABI-应用程序二进制接口 学习总结文章目录
前面学习了ABI的知识,感觉受益良多.对底层与编译器有更加深刻的认识,为此这里将前面写过的关于ABI 的文章给列出来,方便学习与翻阅. [软件开发底层知识修炼]二十一 ABI-应用程序二进制接口一 [ ...
- 【Java学习笔记之二十六】深入理解Java匿名内部类
在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...
- python接口自动化测试二十四:上传多个附件,参数化
python接口自动化测试二十四:上传多个附件,参数化 # 添加多个附件参数化files = [("1.png", "1.png") ("2.png& ...
- 【零基础学Java】—笔记本USB接口案例(二十八)
[零基础学Java]-笔记本USB接口案例(二十八) 一.笔记本电脑 笔记本电脑(laptop)通常具备使用USB设备的功能,在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体什么是USB ...
- 【零基础学Java】—继承父类并实现多个接口(二十五)
[零基础学Java]-继承父类并实现多个接口(二十五) 一.使用接口的注意事项 1️⃣接口是没有静态代码块或者构造方法的 2️⃣一个类的直接父类是唯一的,但是一个类可以同时实现多个接口 3️⃣如果实现 ...
- conan入门(二十):封装只包含头文件(header_only)的库示例
conan: 封装只包含头文件(header_only)的库示例 有的C/C++项目只包含头文件,不需要编译,对于这种情况如何封装为Conan的包呢? Conan官方文档 <Package sc ...
- 模板方法模式 Template method 行为型 设计模式(二十六)
模板方法模式 Template method 上图为网上百度的一份简历模板截图 相信大家都有求职的经历,那么必然需要简历,写简历的时候,很可能你会网上检索一份简历模板,使用此模板的格式,然后替换为你的 ...
- 二十五个软件测试经典面试题,你确定不收藏一波?
二十五个软件测试经典面试题全在这里了,有兴趣的朋友建议收藏一波,或者留言交流! 1.在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试? 建立测试计划,确定测试标准和测 ...
最新文章
- DataGrid的几个小技巧
- [导入]关于DataGrid等控件中的自动编号
- Eclipse反编译插件: Jodeclipse与JadClipse
- 如何选择一款优秀的儿童读写台灯?
- java 反射(Reflection) 详解
- Datastream 开发打包问题
- csdn的blog后台程序的导航菜单的实现
- Js模块化开发的理解
- 代码编辑框控件_某游戏控件遍历
- 设置windows服务依赖项
- 基于卷积神经网络模型的MSTAR高分辨率图像数据集识别实践
- C/C++[codeup 1962]单词替换
- PostgreSQL如何拼接字符串
- 人物传记思维导图模板
- 将pip源更换到国内镜像,如清华源,阿里源等
- docker(十)—— Windows系统下安装docker
- iOS QQ 扫一扫 捷径URL
- 小程序picker三级联动
- 音视频开发--音视频基础
- pmp-关键路径图和甘特图
热门文章
- [230504] 2021年托福阅读真题第4篇|The Famine of the Early Fourteenth Century in Northern Europe|22:18~10:00
- 各浏览器的鼠标滚轮事件
- 2.龙芯2k1000 linux3.10内核编译过程
- 三种任务(异步任务、邮件任务、定时任务)
- 请问python可以制作手机上自动抢票抢单这样的软件吗?
- 线性SVM与Softmax分类器
- MySQL unique啥意思_mysql – UNIQUE,UNIQUE KEY和CONSTRAINT’name’UNIQUE有什么区别?
- css渐变虚线边框的实现
- 机器学习与R语言 多元线性回归insurance.R:保险费
- 怎么把苏宁易购酒的商品主图视频下载下来