包的源代码中的Pool 结构中有一个 New 函数sync,其定义如下type Pool struct {local unsafe.Pointer // local fixed-size per-P pool, actual type is [P]poolLocallocalSize uintptr // size of the local array// New optionally specifies a function to generate// a value when Get would otherwise return nil.// It may not be changed concurrently with calls to Get.New func() interface{}}在Facebook 创建的golang 堆栈跟踪包的第 103 行,在同步池结构中定义了一个匿名函数,如下所示New::var pcsPool = sync.Pool{ New: func() interface{} { return make([]uintptr, maxStackSize) },}所以,从源代码中的注释来看,我假设 Facebook 包已经“指定了一个函数来生成一个值,当 Get 否则返回 nil 时”,但为什么它会被定义为New:这样呢?
目前暂无任何回答
- 0 回答
- 0 关注
- 184 浏览
添加回答
举报
0/150
提交
取消