{"version":"1.0","type":"rich","title":"Gist 309734","description":"This example demonstrates a non-blocking channel proxy in Go using `container/ring` to implement an auto-expanding circular buffer. It shows how a goroutine continuously drains an input channel into a ring buffer while another goroutine forwards values to an output channel, never blocking the sender. The code uses `ring.New`, `Link`, and `Next` to manage buffer growth, doubling the ring size when full, and closes the output channel when the input is closed and drained. The visualization highlights the dynamic queue expansion and channel synchronization behavior through the `sendproxy` function.","provider_name":"VizHub AI Studio","provider_url":"https://next.vizhub.com","html":"<iframe src=\"https://next.vizhub.com/viz/gist-309734?mode=embed\" width=\"960\" height=\"500\" scrolling=\"no\" frameborder=\"1\"></iframe>","width":960,"height":500,"cache_age":3600}