I'm new in Golang and haven't done concurrency in a bit. I would love to hear your opinion on my Dining problem Go solution. ``` package main import "fmt" import "sync" import "time" const NumPhilosophers = 5 var phi [NumPhilosophers]int var forks [NumPhilosophers]sync.Mutex func startPhilosopher(number int, c chan string){ left, right := (number+1)%NumPhilosophers, number min, max := left,right if min > max { min, max = max, min } for i := 0; i < 4; i++ { c <-"Thinking " + time.Now().Round(0).String() forks[min].Lock() forks[max].Lock() c <- "Eating " + time.Now().Round(0).String() forks[max].Unlock() forks[min].Unlock() } close(c) } func main() { var ch [NumPhilosophers]chan string for i := 0; i < NumPhilosophers; i++ { phi[i] = i ch[i] = make(chan string) go startPhilosopher(i, ch[i]) } for a := 0; a < NumPhilosophers; a++ { fmt.Println(a) for i := range ch[a] { fmt.Println(i) } } } ```