graph LR
classDef sender fill:#3e6990,stroke:#305070,color:white,stroke-width:2px
classDef channel fill:#95b8d1,stroke:#6c8da8,stroke-width:2px
classDef receiver fill:#8ca9ad,stroke:#6a878c,color:white,stroke-width:2px
S[Sender] -->|ch <- value| C[Channel] -->|value := <-ch| R[Receiver]
class S sender
class C channel
class R receiver
linkStyle 0,1 stroke:#333,stroke-width:1.5px
Fig 1: Basic channel communication between goroutines
graph TD
classDef start fill:#3e6990,stroke:#305070,color:white,stroke-width:2px
classDef process fill:#95b8d1,stroke:#6c8da8,stroke-width:2px
classDef end fill:#8ca9ad,stroke:#6a878c,color:white,stroke-width:2px
A[Send values] --> B[close(ch)] --> C[Receive remaining values] --> D[Range loop terminates]
class A start
class B,C process
class D end
Fig 3: Lifecycle of a channel from sending to closing