有什么办法可以推到golang频道的最前面吗?

In golang channels, the element pushed last is consumed last. But is there a way to push element to the "front" of the channel so that the element get a chance to get consumed out of turn? Assume elements 1,2,3,4,5,6,7,8 are added to the channel and element 4 failed to process (1,2,3 are processed successfully). In this case I want to push the element 4 again to the channel in such a way that it may get a chance to get processed before elements 5,6,7,8 and subsequent elements added (if they are not already pulled from the channel for processing). This can be easily achieved using blocking queues. But I don't want to use them.

But is there a way to push element to the "front" of the channel

No there is not.

No, a channel is strictly FIFO. You'll have to play with multiple channels if you want priority, or use some other data structure, like a heap: https://golang.org/pkg/container/heap/.