Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Структура Once: выполнение функции один раз
Структура Once
из пакета sync
реализует возможность вызова функции один раз. Она содержит только один метод Do()
, который в качестве параметра принимает ссылку на функцию. Внутри этой функции можно выполнить инициализацию каких-либо значений. Формат метода:
(*sync.Once).Do(f func())
Пример использования структуры Once
приведен в листинге 18.7.
Листинг 18.7. Структура Once
package main
import (
"fmt"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
var once sync.Once
for i := 1; i < 4; i++ {
wg.Add(1)
go func(n int) {
defer wg.Done()
for j := 1; j < 11; j++ {
once.Do(func() {
fmt.Println("sync.Once")
})
fmt.Println("Поток:", n, "j =", j)
time.Sleep(time.Second) // Имитация выполнения задачи
}
}(i)
}
wg.Wait()
}
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов