Go语言类型和接口语法的实验一则
晚上试了下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.") } }