func (*Once) Do

func (o *Once) Do(f func())

Do вызывает функцию f только тогда, когда Do вызывается впервые для этого экземпляра Once.

Другими словами:

var once Once

Если once.Do(f) вызывается несколько раз, только первый вызов вызовет f, даже если f имеет новое значение в каждом вызове. Для выполнения каждой функции требуется новый экземпляр Once.

Do предназначен для инициализации, которая должна выполняться ровно один раз. Поскольку f является niladic, может потребоваться использование литерала функции для захвата аргументов функции, которая будет вызываться функцией Do:

config.once.Do(func() { config.init(filename) })

Поскольку вызов Do не возвращается до тех пор, пока первый вызов f не вернется, если f вызывает вызов Do, он будет блокирован.

Если f падает в панике, Do, считает, что он вернулся; будущие вызовы Do возвращаются без вызова f.

results matching ""

    No results matching ""