So, you’re having a channel through which you can only ever send "struct{}{}"s? If the compiler has an optimization to turn that into a single int, can’t it do the same for a channel that can only send other kinds of unique values? That would allow for more readable code.
Sure. If T is a zero sized type, then chan T should just be an atomic int.
I am not sure how much this improves code readability in practice—I see chan struct{} frequently, but I cannot recall ever having seen chan T for a zero-sized T other than struct{}.