Middle+
Go-догу контекст жөнүндө айтып бер: эмне үчүн колдонулат, кантип иштейт болгуу?
sobes.tech AI
AIден жооп
Go тилинде, context пакети, негизинен, торгондор арасында, өзгөчө тармактык жана узак мөөнөттүү операцияларда, жокко чыгаруу белгилери, убакыт чектери жана башка маанилерди өткөрүп берүү үчүн колдонулат.
Негизги пункттар:
-
Кайда колдонулат:
- Операцияларды жокко чыгаруу (мисалы, HTTP суроолор, базалар) убакыт аяктагандан кийин же белгилер аркылуу.
- Убакыт чектерин (тайм-ауттарды) өткөрүп берүү.
- Суроо менен байланышкан маанилерди өткөрүп берүү (мисалы, идентификаторлор, токендер).
-
Кайсыча иштейт:
context.WithCancelфункциясы менен контекст түзүлөт, ал жаңы контекст жана жокко чыгаруу функциясын кайтарат.- Жокко чыгаруу функциясы чакырылганда, ошол контекстти угуп жаткан бардык торгондор сигнал алат жана ишин токтото алат.
Мисал:
ctx, cancel := context.WithCancel(context.Background())
// Жокко чыгарууга угуп жаткан торгонду ишке киргизебиз
go func() {
<-ctx.Done()
fmt.Println("Операция жокко чыгарылды")
}()
// Бир убакыттан кийин контекстти жокко чыгарабыз
cancel()
Мындайча айтканда, context операциялардын жашоо циклин башкарууга жана ресурстардын агып кетишин алдын алууга жардам берет.