r1笔记day17 golang接口

面向接口的编程

Interface 类型可以定义一组方法,但是这些不需要实。并且interface不能包含任何变量,但是有参数。

好处是什么呢:定义好接口,然后各自去实现。去学习别人的接口。

实际项目中,最好抽象成接口,比如负载均衡,定义好轮训方法,直接换一下接口就好,底层怎么实现不管。这样就不需要改业务代码,就可以实现切换。

type exampler interface{
    Method1(参数列表)返回值列表
    Method2(参数列表)返回值列表
    ...
}

比如下面这个例子,就演示了多态:

package main

import (
	"fmt"
)

//空接口
type Testnuller interface {
}

//接口1
type Tester interface {
	sayHi()
}

//定义一个结构Studet
type Student struct {
	name string
	say  string
}

func (s *Student) sayHi() {
	fmt.Printf("student[%s,%s] sayhi \n", s.name, s.say)
}

//定义一个结构Teacher
type Teacher struct {
	name string
	say  string
}

func (t *Teacher) sayHi() {
	fmt.Printf("Teacher[%s,%s] sayhi \n ", t.name, t.say)
}

//定义一个类型
type myStr string

func (s *myStr) sayHi() {
	fmt.Printf("myStr[%s] sayhi \n", *s)
}

//定义一个接口类型函数,输出是什么实现了这个接口
func WhoSayHi(i Tester) {
	i.sayHi()
}

func main() {
	s := &Student{"mike", "sgo"}
	t := &Teacher{"teacher", "tgo"}
	var str myStr = "hello world"

	//调用一个函数,不同表现
	WhoSayHi(s)
	WhoSayHi(t)
	WhoSayHi(&str)

	//定义一个切片,存接口
	x := make([]Tester, 3)
	x[0] = s
	x[1] = t
	x[2] = &str

	for _, i := range x {
		i.sayHi()
	}
}

运行结果:

PS F:\go\src\go_dev> .\main.exe
student[mike,sgo] sayhi
Teacher[teacher,tgo] sayhi
 myStr[hello world] sayhi
student[mike,sgo] sayhi
Teacher[teacher,tgo] sayhi
 myStr[hello world] sayhi
PS F:\go\src\go_dev>
PS F:\go\src\go_dev>

2019年12月18日 今天天气很不错

早上因为esix服务器宕机,导致工作受影响,一波操作,恢复时,已经是中午时分。

继续处理openstack vm kube-master问题,恢复了实例后,发现个镜像缺失,却不知道需要哪些镜像。这个在以后工作中需要注意下:

就以今天的实例启动后的作为梳理案例:

kube-master节点需要启动,需要确认的服务有以下几个:

服务有三类:system服务相关,rkt服务相关,docker服务相关。

一、sysem服务相关:

oem-cloudinit.service服务是否正常。

kubelete服务是否已经启动。

二、rkt服务相关:

/hyperkube 目录下文件是否已经存在。

是否还需要手动拷贝到目录下。

所需镜像有哪些。

三、docker相关:

kubelete拉起的服务比如apiserver,controlmanager ,schedule等。

docker 需要的镜像。

切记梳理环境,一定要做到细致,根据流程或者业务或者角色组件来。还有步骤一定要细致!!!!

 

今日份鸡汤:早点睡~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值