Hacker News new | ask | show | jobs
by lobster_johnson 4792 days ago
Closing the channel is fine, I suppose, although the supervising goroutine now looks a bit odd:

    select {
      case _, _ := <- doneChannel
        // Other goroutine is now done
It's so implicit that you pretty much have to add a comment to the effect of "this will trigger when the channel is closed", whereas the "case <- doneChannel" is so obvious it doesn't need explaining.

Also, I rather prefer the supervising goroutine to "own" the channel, so it should be the one to close it.

> you ca't just have a defer block without a function invocation

Yeah, I was not thinking Go there for a moment. Should have been "defer func() { doneChannel <- true }".

1 comments

    > the supervising goroutine now looks a bit odd:
This is totally valid:

    select {
    case <-doneChannel:
        //