package main
import "fmt"
import "time"
func main() {
message := make(chan string ,1) // no buffer
count := 3
go func() {
for i := 1; i <= count; i++ {
fmt.Println("send message")
message <- fmt.Sprintf("message %d", i)
}
}()
time.Sleep(time.Second * 3)
for i := 1; i <= count; i++ {
fmt.Println(<-message)
}
}
The output is
send message
send message [wait for 3 sec]
message 1
send message
message 2
message 3
If I change message := make(chan string ,1) // no buffer
to
message := make(chan string ,2) // no buffer
I got
send message
send message
send message [wait 3 sec]
message 1
message 2
message 3
Why 2 buffers channel can store 3 string objects? not 2?
thanks,