Пример для шаблонного метода выше на Go выглядит примерно так:
package main import ( "fmt" ) type IEmployee interface { post() string } type Employee struct { name string virtual IEmployee } func (this *Employee) greeting() string { return "Hello, my name is " + this.name + ", I am a " + this.virtual.post() } type Manager struct { Employee } func (this *Manager) post() string { return "Manager" } func makeManager(name string) *Manager { result := &Manager{Employee{name, nil}} result.Employee.virtual = result return result } type Welder struct { Employee degree int } func (this *Welder) post() string { return "сварщик " + fmt.Sprint(this.degree) + " разряда" } func makeWelder(name string, degree int) *Welder { result := &Welder{Employee{name, nil}, degree} result.Employee.virtual = result return result } func main() { m := makeManager("Петя") w := makeWelder("Коля", 6) fmt.Println(m.greeting()) fmt.Println(w.greeting()) }
Можно запустить: https://play.golang.org/p/ajvp-0iNpbR
Сервис поддержки клиентов работает на платформе UserEcho
Пример для шаблонного метода выше на Go выглядит примерно так:
Можно запустить: https://play.golang.org/p/ajvp-0iNpbR