https://play.golang.org/p/JKXKa7Pvjd
我试图弄清楚如何使用 bytes.Buffer 在流中可以有随机 io.EOF 的情况下测试我的后台函数?
例子:
package main
import (
"fmt"
"io"
"bytes"
"time"
)
func main() {
buffer := new(bytes.Buffer)
go background(buffer)
i := 0
for i < 5 {
i++
fmt.Fprintf(buffer, "%d)teststring\n", i)
time.Sleep(1 * time.Second) // generates a io.EOF
}
time.Sleep(1 * time.Second)
}
func background(r io.Reader) {
buf := make([]byte, 64)
for {
n, err := r.Read(buf)
if err != nil {
fmt.Print(err.Error())
return // removing `return` will result in race condition
}
fmt.Print(string(buf[:n]))
}
}
我正在寻找的结果是:
1)teststring
2)teststring
3)teststring
4)teststring
5)teststring
如何使用time.Sleep(1 * time.Second)模拟延迟来实现这一点?
慕运维8079593
相关分类