This commit is contained in:
wagslane
2023-05-01 15:25:27 -06:00
parent f8912668b8
commit 9be3074de6
868 changed files with 58698 additions and 2 deletions

View File

@@ -0,0 +1,8 @@
{
"question": "What happens when you send to a closed channel?",
"answers": [
"Panic",
"The sender will block forever",
"The receiver will block forever"
]
}

View File

@@ -0,0 +1,33 @@
# 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
```