go 语言 io.Writer 接口

io.Writer接口实现要求

开始以为只是实现了Write方法就行,看了源码发现还有很多细节上的要求

// src/io/io.go
type Writer interface {
	Write(p []byte) (n int, err error)
}

1.要把 p写入实现类型的底层数据中

2.要返回实际写入的长度和在写入时遇到的错误,如果实际写入的长度小于len(p),返回的err必须是非nil

3. p不能在方法内部被修改,即使临时性的也不可以

4. 不能对p进行保存