源于slice初始化的讨论

大哥们,能帮忙解答一个问题么?例如,有一个Read的函数是这样的
Read(p []byte) (n int, err error)

传入的p会被用来接受数据。

那么,我初始化p的时候make([]byte,1)和make([]byte,1024)会有多大区别?或者,有别的写法么?

共 3 个回复


stevewang

要看具体应用场景,如果你只需要读取一个字节,那么[1]byte当然就足够了。
如果数据很多,那么就设定一个合适的缓冲区大小,这个大小既不会太大占用太多的内存,也不会太小导致Read调用太频繁而影响到性能。

# 0

bigbear

预估个合适的大小,可以减少slice重新分配内存和数据复制,可以提高性能。

# 1

stevewang

如果你不确定用什么数值,那就把长度设为 4096 吧,这个数值适用于大多数的应用场景。

# 2