Why dose not work buffer to right on the golang?

If channel become full, it is wait. This is wrong?

I don't understand how it work.

Would you tell me how work golang channel buffer?

```
import (
    "fmt"
    "runtime"
);
func main() {
    runtime.GOMAXPROCS(1); 
    done := make(chan bool, 2); 
    count := 4;
    go func() {
        for i := 0; i < count; i++ {
            done <- true
            fmt.Println("AAAAAAAA", i);
        }
    }()
    for j := 0; j < count; j++ {
        <-done
        fmt.Println("BBBBBBBBBB", j);
    }
}

---------------------------------------------------------------------------------

AAAAAAAAAAAAAAA 0
AAAAAAAAAAAAAAA 1
AAAAAAAAAAAAAAA 2
BBBBBBBBBB 0
BBBBBBBBBB 1
BBBBBBBBBB 2
BBBBBBBBBB 3

```

This is my expect

```
AAAAAAAAAAAAAAA 0
AAAAAAAAAAAAAAA 1
BBBBBBBBBB 0
BBBBBBBBBB 1
AAAAAAAAAAAAAAA 2
AAAAAAAAAAAAAAA 3
BBBBBBBBBB 2
BBBBBBBBBB 3

```