为什么会出现这种情况呢?我们点开f.Read方法看到 Read reads up to len(b) bytes from the File. 读取len(b) 长度byte的数据到b,那现在len(b)=0就一个字节都不会读取了。这时候你就会明白为什么上面标准库中ReadAll参数为什么要用b[len(b):cap(b)] (对切片的任何操作都会复制一个切片b[len(b):cap(b)] 操作对b切片结构体进行了复制,产生了新的切片并且新切片的len=cap=512,这也就解释了为什么数据能读入b[len(b):cap(b)] 了)。观察下面代码: