mirror of
https://github.com/bootdotdev/fcc-learn-golang-assets.git
synced 2025-12-16 18:21:16 +00:00
34 lines
675 B
Markdown
34 lines
675 B
Markdown
# Channels Review
|
|
|
|
Here are a few extra things you should understand about channels from [Dave Cheney's awesome article](https://dave.cheney.net/2014/03/19/channel-axioms).
|
|
|
|
## A send to a nil channel blocks forever
|
|
|
|
```go
|
|
var c chan string // c is nil
|
|
c <- "let's get started" // blocks
|
|
```
|
|
|
|
## A receive from a nil channel blocks forever
|
|
|
|
```go
|
|
var c chan string // c is nil
|
|
fmt.Println(<-c) // blocks
|
|
```
|
|
|
|
## A send to a closed channel panics
|
|
|
|
```go
|
|
var c = make(chan int, 100)
|
|
close(c)
|
|
c <- 1 // panic: send on closed channel
|
|
```
|
|
|
|
## A receive from a closed channel returns the zero value immediately
|
|
|
|
```go
|
|
var c = make(chan int, 100)
|
|
close(c)
|
|
fmt.Println(<-c) // 0
|
|
```
|