fmt.printf 为什么能输出整个缓冲数据?

junliuxian · · 1317 次点击
package main import ( //"fmt" "log" "strings" "os" ) func main() { log.SetOutput(os.Stdout) buff := make([]byte, 2) r := strings.NewReader("hello world") for { count, err := r.Read(buff) if err != nil { return } //fmt.Printf("%s", buff[:count]) // hello world log.Printf("%s", buff[:count]) // he ll o wo rl d } } 2009/11/10 23:00:00 he 2009/11/10 23:00:00 ll 2009/11/10 23:00:00 o 2009/11/10 23:00:00 wo 2009/11/10 23:00:00 rl 2009/11/10 23:00:00 d
#7
更多评论
polaris
社区,需要你我一同完善!
`fmt.Printf` 是输出到 `os.Stdout`,它是行缓冲的,而 `log.Printf` 是输出到 `os.Stderr`,这是无缓冲的。所以有这个差异!
#1
我感觉不像是 fmt 与 log 的问题,如果是设置了缓冲区,每次打印不会超过这个值。另外怎么还有 this 这种操作
#2