Channels and Select
Buffered Capacity
A buffered channel stores a limited number of values before a receive.
Buffered Capacity
buffered_capacity.go
package main
import "fmt"
func main() {
var second =
queue := make(chan string, 3)
queue <- "red"
queue <- second
fmt.Println("capacity=", cap(queue))
fmt.Println("waiting=", len(queue))
fmt.Println("first=", <-queue)
fmt.Println("waitingAfterOne=", len(queue))
}
package main
import "fmt"
func main() {
var second =
queue := make(chan string, 3)
queue <- "red"
queue <- second
fmt.Println("capacity=", cap(queue))
fmt.Println("waiting=", len(queue))
fmt.Println("first=", <-queue)
fmt.Println("waitingAfterOne=", len(queue))
}
package main
import "fmt"
func main() {
var second =
queue := make(chan string, 3)
queue <- "red"
queue <- second
fmt.Println("capacity=", cap(queue))
fmt.Println("waiting=", len(queue))
fmt.Println("first=", <-queue)
fmt.Println("waitingAfterOne=", len(queue))
}
buffered capacity
`cap(channel)` reports the buffer size, while `len(channel)` reports how many values are waiting.