多云平台 或者不同平台的服务器信息 操作相同只是平台不同 就可以用接口来做

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}}
}

二十、接口的应用示例(便于理解使用场景)相关推荐

  1. 聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore

    前几篇分析了一下AQS的原理和实现,这篇拿Semaphore信号量做例子看看AQS实际是如何使用的. Semaphore表示了一种可以同时有多个线程进入临界区的同步器,它维护了一个状态表示可用的票据, ...

  2. 【软件开发底层知识修炼】二十六 ABI-应用程序二进制接口 学习总结文章目录

    前面学习了ABI的知识,感觉受益良多.对底层与编译器有更加深刻的认识,为此这里将前面写过的关于ABI 的文章给列出来,方便学习与翻阅. [软件开发底层知识修炼]二十一 ABI-应用程序二进制接口一 [ ...

  3. 【Java学习笔记之二十六】深入理解Java匿名内部类

    在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...

  4. python接口自动化测试二十四:上传多个附件,参数化

    python接口自动化测试二十四:上传多个附件,参数化 # 添加多个附件参数化files = [("1.png", "1.png") ("2.png& ...

  5. 【零基础学Java】—笔记本USB接口案例(二十八)

    [零基础学Java]-笔记本USB接口案例(二十八) 一.笔记本电脑 笔记本电脑(laptop)通常具备使用USB设备的功能,在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体什么是USB ...

  6. 【零基础学Java】—继承父类并实现多个接口(二十五)

    [零基础学Java]-继承父类并实现多个接口(二十五) 一.使用接口的注意事项 1️⃣接口是没有静态代码块或者构造方法的 2️⃣一个类的直接父类是唯一的,但是一个类可以同时实现多个接口 3️⃣如果实现 ...

  7. conan入门(二十):封装只包含头文件(header_only)的库示例

    conan: 封装只包含头文件(header_only)的库示例 有的C/C++项目只包含头文件,不需要编译,对于这种情况如何封装为Conan的包呢? Conan官方文档 <Package sc ...

  8. 模板方法模式 Template method 行为型 设计模式(二十六)

    模板方法模式 Template method 上图为网上百度的一份简历模板截图 相信大家都有求职的经历,那么必然需要简历,写简历的时候,很可能你会网上检索一份简历模板,使用此模板的格式,然后替换为你的 ...

  9. 二十五个软件测试经典面试题,你确定不收藏一波?

    二十五个软件测试经典面试题全在这里了,有兴趣的朋友建议收藏一波,或者留言交流! 1.在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试? 建立测试计划,确定测试标准和测 ...

最新文章

  1. DataGrid的几个小技巧
  2. [导入]关于DataGrid等控件中的自动编号
  3. Eclipse反编译插件: Jodeclipse与JadClipse
  4. 如何选择一款优秀的儿童读写台灯?
  5. java 反射(Reflection) 详解
  6. Datastream 开发打包问题
  7. csdn的blog后台程序的导航菜单的实现
  8. Js模块化开发的理解
  9. 代码编辑框控件_某游戏控件遍历
  10. 设置windows服务依赖项
  11. 基于卷积神经网络模型的MSTAR高分辨率图像数据集识别实践
  12. C/C++[codeup 1962]单词替换
  13. PostgreSQL如何拼接字符串
  14. 人物传记思维导图模板
  15. 将pip源更换到国内镜像,如清华源,阿里源等
  16. docker(十)—— Windows系统下安装docker
  17. iOS QQ 扫一扫 捷径URL
  18. 小程序picker三级联动
  19. 音视频开发--音视频基础
  20. pmp-关键路径图和甘特图

热门文章

  1. [230504] 2021年托福阅读真题第4篇|The Famine of the Early Fourteenth Century in Northern Europe|22:18~10:00
  2. 各浏览器的鼠标滚轮事件
  3. 2.龙芯2k1000 linux3.10内核编译过程
  4. 三种任务(异步任务、邮件任务、定时任务)
  5. 请问python可以制作手机上自动抢票抢单这样的软件吗?
  6. 线性SVM与Softmax分类器
  7. MySQL unique啥意思_mysql – UNIQUE,UNIQUE KEY和CONSTRAINT’name’UNIQUE有什么区别?
  8. css渐变虚线边框的实现
  9. 机器学习与R语言 多元线性回归insurance.R:保险费
  10. 怎么把苏宁易购酒的商品主图视频下载下来