DEV Community

Discussion on: Idiomatic way to implement this in golang

Collapse
 
julianchu profile image
Julian-Chu

Rahul already made the important part, I'd like to add code for Work()


type ISensor interface {
    BeforeStart()
    AfterStart()
    ShutdownStart()
    Process()
}

type SensorWorker struct {
    sensor ISensor
}


func (w SensorWorker) Work() {
    w.sensor.BeforeStart()
    w.sensor.AfterStart()
    w.sensor.Process()
    w.sensor.ShutdownStart()
}

then you can do something like following:


func main() {
    sensorWorker:= &SensorWorker{sensor:sensorA}
    sensorWorker.Work()
    sensorWorker.sensor = sensorB
    sensorWorker.Work()
}

Collapse
 
ahmednawazkhan profile image
Ahmed Nawaz Khan

thanks