package q1226 import "sync" var ( pick = sync.Mutex{} forks = [5]sync.Mutex{} ) type DiningPhilosophers struct { } func (p *DiningPhilosophers) wantsToEat( philosopher int, pickLeftFork func(), pickRightFork func(), eat func(), putLeftFork func(), putRightFork func(), ) { l, r := &forks[philosopher], &forks[(philosopher+1)%5] pick.Lock() l.Lock() r.Lock() pick.Unlock() pickLeftFork() pickRightFork() eat() putLeftFork() l.Unlock() putRightFork() r.Unlock() } var _t = DiningPhilosophers{} var _ = _t.wantsToEat