Sobes.tech
Senior

Go'догу контекст (context) эмне жана ал эмне үчүн керек?

sobes.tech AI

AIден жооп

Go'да context — бул пакет жана түр, ал горутиндердин ортосунда жокко чыгаруу белгилери, убакыт чектери жана башка маанилүү маалыматтарды өткөрүү үчүн колдонулат.

contextтин негизги милдеттери:

  • Время лимиттерине жеткенде же колдонуучу жокко чыгарганда операцияларды жокко чыгара алат (мисалы, базага суроо же HTTP).
  • Операциялар үчүн убакыт чектерин (deadlines) өткөрөт.
  • Функциялар арасында маанилерди өткөрүүгө мүмкүндүк берет (мисалы, суроо идентификаторлору).

Колдонуу мисалы:

ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()

select {
case result := <-doWork(ctx):
    fmt.Println("Жыйынтык:", result)
case <-ctx.Done():
    fmt.Println("Операция жокко чыгарылды же убакыт аяктады")
}

Мында, ctx doWork функциясына өткөрүлөт жана ал өз ишин токтото алат, эгер контекст жокко чыгарылса же убакыт аякса. Бул операциялардын жана ресурстардын жашоо мөөнөтүн башкарууга жардам берет.