晚上试了下Go语言的interface和struct语法,对Go语言独树一帜的面向对象方式稍微有点了解,下面是实验的代码。
代码中声明了两个接口和两个类型,其中一个类型实现了两个接口,而另一个类型只实现一个接口。
package main
type IServer interface {
Start()
Stop()
}
type IRestartAble interface {
Restart()
}
//--------------------------------------------
type ServerTypeA struct {
}
func (s *ServerTypeA) Start() {
println("ServerTypeA start")
}
func (s *ServerTypeA) Stop() {
println("ServerTypeA stop")
}
func (s *ServerTypeA) Restart() {
println("ServerTypeA restart")
}
//--------------------------------------------
type ServerTypeB struct {
}
func (s *ServerTypeB) Start() {
println("ServerTypeB start")
}
func (s *ServerTypeB) Stop() {
println("ServerTypeB stop")
}
func main() {
var sa IServer = new(ServerTypeA)
sa.Start()
sa.Stop()
s1, ok1 := sa.(IRestartAble)
if ok1 {
s1.Restart()
} else {
println("ServerTypeA not restart able.")
}
var sb IServer = new(ServerTypeB)
sb.Start()
sb.Stop()
s2, ok2 := sb.(IRestartAble)
if ok2 {
s2.Restart()
} else {
println("ServerTypeB not restart able.")
}
}
原标签已从 2023-12-16 存档快照 恢复。本文按原站快照恢复排版,并接回已核实的本地图片。查看恢复说明