59 / 73

Terminlar lug'ati

Bu kitobda aslida ishlatilgan terminlarning kitob ishlatgan ma'nosidagi qisqa, aniq ta'riflari. Agar termin boshqa joyda batafsil yoritilgan bo'lsa, yozuv o'sha bobga yo'naltiradi.

A

Aliasing — Bir xil tayanch xotirani baham ko'radigan ikkita slice (yoki map) o'zgaruvchisi; shuning uchun biri orqali qilingan o'zgarish ikkinchisida ko'rinadi. 15-mavzuga (Massivlar va slice'lar) va 24-mavzuga (O'zgaruvchanlik va ma'lumotni ulashish) qarang.

Anonymous function — Nomsiz funksiya literali, odatda inline ta'riflanadi va darhol chaqiriladi yoki closure sifatida ushlanadi. 20-mavzuga (Qiymat sifatida funksiyalar) qarang.

any — interface{}ning oldindan e'lon qilingan taxallusi (alias), har bir tip qanoatlantiradigan interface. Cheklov sifatida yoki "noma'lum tipdagi qiymat" ushlagichi sifatida foydali, lekin haqiqiy interface yoki type parameter'dan zaifroq vosita. 26-mavzuga (Interface'lar bilan loyihalash) qarang.

Atomic operation — Xotira manzilida boshqa goroutine'lar hech qachon yarim bajarilgan holatda ko'ra olmaydigan o'qish, yozish yoki o'qish-o'zgartirish-yozish amali. Lock-free hisoblagichlar va flag'lar uchun sync/atomic paketi tomonidan amalga oshiriladi. 42-mavzuga (Sinxronizatsiya) qarang.

B

Backpressure — Cheksiz navbat o'sishiga yo'l qo'yish o'rniga, iste'molchilar ulgurmaganda ishlab chiqaruvchilarni (producer) sekinlashtiradigan mexanizm. Goda bu odatda qat'iy sig'imli buferli channel orqali amalga oshiriladi. 44-mavzuga (Concurrency dizayn ko'rsatmalari) qarang.

Blocking — Goroutine channel send/receive, mutex yoki I/O'da kutayotganda bo'ladigan holat. Goroutine'ni bloklash faqat shu goroutine'ning o'z progressini to'xtatadi — u OS thread'ni band qilmaydi. 40-mavzuga (Concurrency asoslari) qarang.

Buffered channel — n > 0 uchun make(chan T, n) bilan yaratilgan channel. Bufer to'lguncha send'lar mos receive'siz ham muvaffaqiyatli bo'ladi. 40-mavzuga (Concurrency asoslari) qarang.

Build tag — Faylni OS, arxitektura yoki maxsus tag asosida build'ga kiritadigan yoki chiqarib tashlaydigan //go:build izohi. 52-mavzuga (Software'ni build qilish va reliz qilish) qarang.

C

Capacity — Slice uchun, append yangi xotira ajratishi kerak bo'lguncha tayanch massiv sig'ishi mumkin bo'lgan elementlar soni. Uzunlikdan farq qiladi. 15-mavzuga (Massivlar va slice'lar) qarang.

Cgo — Go kodiga C funksiyalarini chaqirishga va aksincha imkon beradigan mexanizm, ammo haqiqiy ABI chegarasini kesib o'tish va ikkinchi, muvofiqlashtirilmagan xotira menejeri xarajati evaziga. 56-mavzuga (Cgo va Foreign Function Interface'lar) qarang.

Channel — Goroutine'lar orasida ma'lumot yuborish va qabul qilish uchun tipli, birinchi darajali qiymat; send/receive amallari sinxronizatsiya nuqtalari sifatida ishlaydi. 40-mavzuga (Concurrency asoslari) qarang.

Closure — O'zi ta'riflangan scope'dagi o'zgaruvchilarga murojaat qiladigan funksiya qiymati; closure'ning o'ziga erishish mumkin ekan ularni tirik saqlaydi. 20-mavzuga (Qiymat sifatida funksiyalar) qarang.

comparable — == va != bilan ishlatish mumkin bo'lgan har qanday tip qanoatlantiradigan o'rnatilgan cheklov; map kalitlari uchun talab qilinadi va tenglik kerak bo'lgan generic kodda foydali. 30-mavzuga (Generic funksiyalar) qarang.

Constraint — Generic e'londa type parameter o'rniga qaysi tiplar qo'yilishi mumkinligini va shu tipdagi qiymatlarda qanday operatsiyalarga ruxsat berilishini cheklaydigan interface. 30-mavzuga (Generic funksiyalar) qarang.

Context (context.Context) — Bekor qilish signalini, ixtiyoriy deadline'ni va ixtiyoriy ravishda so'rov doirasidagi ma'lumotni olib yuradigan o'zgarmas qiymat; chaqiruv zanjiri bo'ylab funksiyaning birinchi argumenti sifatida aniq uzatiladi. 43-mavzuga (Context va bekor qilish) qarang.

D

Deadlock — Goroutine'lar bir-birini kutib doimiy bloklangan, ularni blokdan chiqaradigan hech qanday hodisalar ketma-ketligi mumkin bo'lmagan holat. Runtime barcha goroutine'lar uxlayotgan aniq holatni aniqlaydi va panic qiladi.

defer — Chaqiruvni o'rab turgan funksiya qaytganda, boshqa deferred chaqiruvlarga nisbatan last-in-first-out tartibida ishga tushirishni rejalashtiradigan operator. Resursni olingan joyning yonida bo'shatishning standart idiomasi. 35-mavzuga (panic, recover va muvaffaqiyatsizlik rejimlari) qarang.

E

Embedding — Tipni (struct yoki interface) boshqasi ichiga maydon nomi bermasdan kiritish; bu embed qilingan tipning maydonlari va metodlarini tashqi tipga ko'taradi. 18-mavzuga (Struct'lar va ma'lumotlarni modellashtirish) qarang.

Escape analysis — Kompilyatorning statik tahlili: qiymatning umri uni e'lon qilgan funksiya bilan tugashi isbotlanishi mumkinmi (stack'da ajratiladi) yoki undan uzoqroq yashaydi deb faraz qilish kerakmi (heap'da ajratiladi). 22-mavzuga (Goda xotirani tushunish) qarang.

F

Fan-in — Bir nechta channel'dagi qiymatlarni bittasiga birlashtiradigan concurrency andozasi. 41-mavzuga (Channel andozalari) qarang.

Fan-out — Bitta channel'dan ishni bir nechta worker goroutine'lar bo'ylab taqsimlaydigan concurrency andozasi. 41-mavzuga (Channel andozalari) qarang.

Fuzzing — Sinalayotgan funksiyaga kod qamrovi yo'naltirgan kirishlarni generatsiya qiladigan, crash yoki muvaffaqiyatsiz invariantni keltirib chiqaradigan kirishlarni qidiradigan avtomatlashtirilgan testlash usuli. Bunga go test -fuzz orqali o'rnatilgan qo'llab-quvvatlash mavjud. 38-mavzuga (Ilg'or testlash) qarang.

G

Garbage collector (GC) — Goning avtomatik, bir vaqtda ishlaydigan, tri-color mark-and-sweep xotira qaytaruvchisi; Go 1.26 dan beri "Green Tea" kollektori tomonidan amalga oshiriladi — bir xil asosiy algoritmning tezroq implementatsiyasi. Asosan GOGC va GOMEMLIMIT orqali sozlanadi. 25-mavzuga (Garbage Collection) qarang.

Generic function/type — Bir yoki bir nechta type parameter bo'yicha parametrlangan, har bir chaqiruv yoki foydalanish joyida instansiyalanadigan funksiya yoki tip. 29-mavzuga (Generics nima uchun muhim) hamda 32-mavzuga (Idiomatik generics) qarang.

Generic method — Go 1.27 dan boshlab, receiver tipining allaqachon mavjud type parameter'laridan mustaqil ravishda o'z type parameter'larini e'lon qiladigan metod. Interface metodlarida mavjud emas. 21-mavzuga (Metodlar va receiver'lar) qarang.

Goroutine — Chaqiruvchisi bilan bir vaqtda ishlaydigan funksiya; Go runtime tomonidan M:N modelida (ko'p goroutine, kamroq OS thread) rejalashtiriladi, kichik o'sadigan stack bilan boshlanadi. 40-mavzuga (Concurrency asoslari) qarang.

H

http.Handler — Handler'lar ham, middleware ham amalga oshiradigan bir metodli interface (ServeHTTP(ResponseWriter, *Request)); bu HTTP serverni butunlay kompozitsiyalanadigan handler'lardan qurilgan qiladi. 48-mavzuga (HTTP va Networking) qarang.

I

Interface — Metod signaturalari to'plami. Shu metodlarni amalga oshiradigan har qanday tip interface'ni yashirin ravishda qanoatlantiradi — implements e'loni talab qilinmaydi. 26-mavzuga (Interface'lar bilan loyihalash) qarang.

Iterator function — Go 1.23 dan boshlab, func(func() bool), func(func(V) bool) yoki func(func(K, V) bool) shakllaridan biriga mos keladigan, for...range bilan to'g'ridan-to'g'ri aylanib chiqish mumkin bo'lgan funksiya. iter paketi ularni iter.Seq[V] va iter.Seq2[K, V] deb nomlaydi; ko'p standart kutubxona funksiyalari (maps.Keys, slices.Values va boshqalar) ularni qaytaradi. 14-mavzuga (Sikllar va iteratsiya) qarang.

iota — Har bir const blokida 0 ga qaytariladigan va har qatorda bittaga oshadigan identifikator; raqamlarni qo'lda yozmasdan ketma-ketliklar va sanab o'tishlar (enumeratsiyalar) qurish uchun ishlatiladi. 11-mavzuga (Konstantalar va literallar) qarang.

L

Loop-variable capture — Go 1.22 dan oldin for sikli iteratsiyalar bo'ylab bitta o'zgaruvchidan qayta foydalangan, shuning uchun uni havola bilan ushlagan closure yoki goroutine faqat uning oxirgi qiymatini ko'rgan. Go 1.22 har iteratsiyaga yangi o'zgaruvchi beradi va yangi kod uchun bu tuzoqni bartaraf qiladi. 14-mavzuga (Sikllar va iteratsiya) qarang.

M

Method set — Berilgan tipda chaqirish mumkin bo'lgan metodlar to'plami; bu tip berilgan interface'ni qanoatlantiradimi yoki yo'qligini belgilaydi. Qiymat va pointer metod to'plamlari bir-biridan farq qiladi. 21-mavzuga (Metodlar va receiver'lar) qarang.

Module — Birga versiyalanadigan va reliz qilinadigan paketlar to'plami; module path va uning bog'liqliklarini nomlaydigan go.mod fayli bilan belgilanadi. 7-mavzuga (Bog'liqliklarni boshqarish) qarang.

Monotonic clock reading — time.Now() devor soati vaqti yonida biriktiradigan ikkinchi, doim oshib boruvchi vaqt tamg'asi; Sub va Since ichkarida undan foydalanadi, shunda o'tgan vaqt o'lchovlari soat tuzatishlari bilan buzilmaydi. 45-mavzuga (Vaqt va rejalashtirish) qarang.

Mutex — O'zaro istisno qulfi (sync.Mutex); uni ushlab turgan goroutine himoyalangan kritik bo'limga boshqa goroutine'larni kiritmaydi. 42-mavzuga (Sinxronizatsiya) qarang.

N

nil — Pointer'lar, interface'lar, map'lar, slice'lar, channel'lar va funksiyalar uchun zero value. Nil interface va nil pointer'ni ushlab turgan interface — turli qiymatlar bo'lib, xatolarning takrorlanuvchi manbaidir. 23-mavzuga (Pointer'lar tushuntirilgan) va 26-mavzuga (Interface'lar bilan loyihalash) qarang.

P

panic — Joriy goroutine'ning stack'ini yechadigan, yo'lda deferred chaqiruvlarni ishga tushiradigan, dastur crash bo'lguncha yoki deferred funksiyadagi recover yechishni to'xtatguncha davom etadigan runtime xatti-harakati. Dasturchi xatolari va tiklab bo'lmaydigan holatlar uchun zaxiralangan, oddiy muvaffaqiyatsizlik uchun emas. 35-mavzuga (panic, recover va muvaffaqiyatsizlik rejimlari) qarang.

Pointer — Boshqa qiymatning manzilini ushlab turadigan qiymat; & bilan olinadi va * bilan dereference qilinadi. Funksiyaga chaqiruvchining ma'lumotini kuzatish yoki o'zgartirish, yoxud katta qiymatni nusxalashdan qochish uchun ishlatiladi. 23-mavzuga (Pointer'lar tushuntirilgan) qarang.

R

Race condition — Umumiy xotiraga bir vaqtdagi kirish natijasi scheduling vaqtiga bog'liq bo'lgan xato; kirishlardan kamida biri yozish amali bo'ladi. Runtime'da go test -race / go run -race bilan aniqlanadi. 42-mavzuga (Sinxronizatsiya) qarang.

recover — Faqat deferred funksiya ichida to'g'ridan-to'g'ri chaqirilganda foydali bo'lgan o'rnatilgan funksiya; davom etayotgan panic'ni to'xtatadi va panicga berilgan qiymatni qaytaradi. 35-mavzuga (panic, recover va muvaffaqiyatsizlik rejimlari) qarang.

Reflection — Ma'lumot shakli runtime'gacha noma'lum bo'lganda (encoder'lar, ORM'lar, umumiy vositalar) reflect paketi orqali qiymat va tiplarni runtime'da tekshirish va boshqarish. Statik koddan sekinroq va kamroq tip-xavfsiz bo'lib, oxirgi chora sifatida ishlatilishi kerak. 54-mavzuga (Reflection amalda) qarang.

S

Sentinel error — errors.Is bilan taqqoslash uchun mo'ljallangan aniq, eksport qilingan error qiymati (io.EOF yoki sql.ErrNoRows kabi); ixtiyoriy muvaffaqiyatsizlik emas, balki aniq, kutilgan holatni bildiradi. 33-mavzuga (Xatolar qiymat sifatida) qarang.

Shadowing — Qamrab oluvchi scope'dagi bilan bir xil nomli o'zgaruvchini e'lon qilish; ichki scope'ning qolgan qismi uchun tashqi nomni erishib bo'lmaydigan qiladi. := bilan birlashganda err-qayta ishlash xatolarining tez-tez uchraydigan manbai. 12-mavzuga (O'zgaruvchilar va bloklar) qarang.

Slice — Tayanch massivga ko'rinishni tavsiflovchi uch so'zli header (ko'rsatkich, uzunlik, sig'im); ko'pchilik Go kodi massivlar bilan emas, slice'lar bilan ishlaydi. 15-mavzuga (Massivlar va slice'lar) qarang.

Struct tag — Struct maydoniga biriktirilgan xom satr literali, an'anaviy ravishda key:"value" juftliklari shaklida; encoding/json kabi paketlar reflection orqali o'qib, maydon bilan qanday ishlashni belgilaydi. 18-mavzuga (Struct'lar va ma'lumotlarni modellashtirish) va 47-mavzuga (Encoding va Serializatsiya) qarang.

Synctest bubble — synctest.Test (testing/synctest, Go 1.25 dan barqaror) yaratgan, yagona virtuallashtirilgan soatni baham ko'radigan izolyatsiya qilingan goroutine'lar guruhi; testga haqiqiy devor soati vaqtini kutmasdan haqiqiy taymer va timeout'larni sinashga imkon beradi. 38-mavzuga (Ilg'or testlash) qarang.

T

Table-driven test — Har bir holat uchun qo'lda yozilgan tasdiqlash bloki o'rniga t.Run bilan aylanib chiqiladigan kirish/kutilgan-chiqish holatlari slice'i sifatida yozilgan test. Go testlashining dominant uslubi. 36-mavzuga (Testlash asoslari) qarang.

Type assertion — Interface qiymati T tipini ushlab tursa, undan konkret qiymatni chiqarib oladigan x.(T) ifodasi; panic qilmasdan sinash uchun ixtiyoriy ikki qiymatli v, ok := x.(T) shakli mavjud. 28-mavzuga (Type assertion'lar va reflection chegaralari) qarang.

Type parameter — Generic e'londagi to'ldiruvchi tip (func Map[T, U any](...)); interface bilan cheklangan va har bir chaqiruv joyida — odatda inferensiya qilinadi — to'ldiriladi. 30-mavzuga (Generic funksiyalar) qarang.

U

unsafe.Pointer — Har qanday boshqa pointer tipiga yoki uintptrga va undan konvertatsiya qilinishi mumkin bo'lgan, Goning tip tizimini chetlab o'tadigan pointer tipi. Faqat hujjatlashtirilgan konvertatsiyalarning tor to'plami uchun qonuniy; pointer arifmetikasi uchun emas. 55-mavzuga (Unsafe kod) qarang.

UTF-8 — Go manba fayllari va string qiymatlari konvensiya bo'yicha ishlatadigan o'zgaruvchan kenglikdagi kodlash; Go string — faqat o'qish uchun bayt slice bo'lib, uning baytlari yaroqli UTF-8 tashkil etishi siz tekshirmaguningizcha kafolatlanmagan. 16-mavzuga (Satrlar bilan ishlash) qarang.

W

WaitGroup (sync.WaitGroup) — Bitta goroutine'ga (Wait) boshqa goroutine'lar to'plami har biri tugaganini (Done) bildirguncha bloklanishga imkon beradigan hisoblagich. 42-mavzuga (Sinxronizatsiya) qarang.

Worker pool — Umumiy channel'dan ish elementlarini tortib oladigan qat'iy sondagi goroutine'lar; har bir element uchun alohida goroutine ishga tushirish o'rniga bir vaqtda ishlaydigan goroutine'lar sonini cheklash uchun ishlatiladi. 40-mavzuga (Concurrency asoslari) va 41-mavzuga (Channel andozalari) qarang.

Z

Zero value — O'zgaruvchi aniq initsializatorsiz e'lon qilinganda avtomatik ravishda qabul qiladigan qiymat — sonlar uchun 0, satrlar uchun "", pointer'lar/interface'lar/map'lar/slice'lar/channel'lar/funksiyalar uchun nil va struct'lar uchun rekursiv ravishda har bir maydonning zero value'si. 10-mavzuga (Nol qiymatlar va initsializatsiya) qarang.