go語言作為編程語言中的後起之秀,在博采眾長的同時又不失個性,在注重運行效率的同時又重視開發效率,不失為一種好的開發語言。在go語言中,沒有類的概念,但是仍然可以用struct+interface來實現類的功能,下面的這個簡單的例子演示了如何用go來模擬c++中的多態的行為。
package main import "os" import "fmt" type Human interface { sayHello() } type Chinese struct { name string } type English struct { name string } func (c *Chinese) sayHello() { fmt.Println(c.name,"說:你好,世界") } func (e *English) sayHello() { fmt.Println(e.name,"says: hello,world") } func main() { fmt.Println(len(os.Args)) c := Chinese{"汪星人"} e := English{"jorn"} m := map[int]Human{} m[0] = &c m[1] = &e for i:=0;i<2;i++ { m[i].sayHello() } }
從上面的例子來看,在go中實現類似C++中的多態可謂是非常的簡單,只要實現相同的接口即可。