猿问

使用带有匿名函数的标签

包的源代码中的Pool 结构中有一个 New 函数sync,其定义如下


type Pool struct {

local unsafe.Pointer // local fixed-size per-P pool, actual type is [P]poolLocal

localSize 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:这样呢?


饮歌长啸
浏览 185回答 0
0回答
随时随地看视频慕课网APP

相关分类

Go
我要回答