【发布时间】:2021-06-24 10:21:08
【问题描述】:
我们都知道,Write 方法并不能保证从缓冲区中写入高字节。因此,使用原始 Write 方法将字节写入 asocket 的规范方法是这样的
//how many bytes we have written
written := 0
for written < len(msg){
//write the bytes from buffer that havent been witten yet
wr, err := conn.Write(msg[written:])
if err != nil{
return;
}
written += wr
}
现在假设我不想使用这种低级技术并且想使用一个函数来为我做这件事。我应该使用标准库中的哪个函数?
【问题讨论】:
-
“我们都知道 Write 方法不能保证从缓冲区中写入高字节”,不,我们并不都知道,因为它不是真的。来自文档:
Write must return a non-nil error if it returns n < len(p)