The Go language implements polymorphic functional instances similar to c++


preface

As a rising star in programming language, Go language is a good development language, which can learn from others and at the same time lose its individuality and pay attention to operation efficiency and development efficiency at the same time. In the go language, there is no concept of a class, but it can still be used struct+interface The following simple example demonstrates how to use go to simulate the polymorphic behavior in c++.

The sample code

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," Say hello, world ")
}


func (e *English) sayHello() {
  fmt.Println(e.name,"says: hello,world")
}


func main() {
  fmt.Println(len(os.Args))

  c := Chinese{" Wang Xing people "}
  e := English{"jorn"}
  m := map[int]Human{}

  m[0] = &c
  m[1] = &e

  for i:=0;i<2;i++ {
    m[i].sayHello()
  }
}

conclusion

From the above example, implementing polymorphism like C++ in go is very simple, as long as the same interface is implemented.