• Зачем нужны интерфейсы в golang?

    Ninazu
    @Ninazu
    Сам искал ответа на этот вопрос. И вдохновившись примером с лампочками, таки разобрался)

    Пусть тут полежит для потомков
    package main
    
    import "fmt"
    
    type LampDiode struct{}
    
    func (l *LampDiode) ScrewOn() string {
    	return "Lamp 1"
    }
    
    type LampIncandescent struct{}
    
    func (l *LampIncandescent) ScrewOn() string {
    	return "Lamp 2"
    }
    
    type Lamp interface {
    	ScrewOn() string
    }
    
    func Chandelier(l Lamp) {
    	fmt.Println(l.ScrewOn())
    }
    
    func main() {
    	var l1 Lamp
    	l1 = new(LampDiode)
    	Chandelier(l1)
    
    	var l2 Lamp
    	l2 = new(LampIncandescent)
    	Chandelier(l2)
    }
    Ответ написан
    Комментировать