Go darslariga kirish
Bu darslarda Go dasturlash tilini eng asosiy tushunchalardan boshlab o‘rganamiz. Dastlab kod yozish, uni saqlash va terminal orqali ishga tushirishni ko‘ramiz.
Darslar bir-biri bilan bog‘langan. Shu sababli ularni saytdagi tartib bo‘yicha o‘qish tavsiya etiladi. Har bir kod misolini imkon qadar o‘zingiz yozib ko‘ring. Keyin dasturni ishga tushiring va natijani tahlil qiling.
Faqat kodni o‘qish bilan cheklanib qolmaslik muhim. Kodni yozish, xato qilish, xato xabarini ko‘rish va uni tuzatish mavzuni ancha yaxshi tushunishga yordam beradi.
Go’da yozilgan kodni ishga tushirishdan oldin uni kompilyator tekshiradi. Kompilyator — manba kodni tahlil qiladigan va uni kompyuter bajara oladigan ko‘rinishga aylantiradigan vosita.
Agar kompilyator sintaksis yoki turlar bilan bog‘liq xato topsa, dastur muvaffaqiyatli yaratilmaydi. Bunday holatda terminalda xato xabari ko‘rsatiladi.
Bu jarayonda uchta tushunchani bir-biridan ajratish muhim:
- manba kod — dasturchi yozadigan
.gofayllar; - kompilyator — manba kodni tekshiradigan va mashina bajarishi mumkin bo‘lgan kodga aylantiradigan vosita;
- bajariladigan fayl — operatsion tizim ishga tushira oladigan tayyor dastur.
Windows’da bajariladigan fayl nomi odatda .exe kengaytmasi bilan tugaydi. Masalan, app.exe.
Linux va macOS’da esa bajariladigan fayl ko‘pincha kengaytmasiz bo‘ladi. Masalan, app.
Bu farq Go tilining o‘zidan emas, operatsion tizimlardagi fayl nomlash va bajariladigan dasturlar bilan ishlash qoidalaridan kelib chiqadi.
Kerakli vositalar
Darslarni bajarish uchun uchta asosiy vosita kerak:
- Go kompilyatori va Go bilan birga o‘rnatiladigan buyruqlar;
- kod muharriri;
- terminal.
Go’ni o‘rnatganda faqat kompilyator emas, balki bir nechta asosiy vositalar ham o‘rnatiladi. Ulardan eng ko‘p ishlatiladiganlari go va gofmt.
go buyrug‘i Go loyihalari bilan ishlashdagi asosiy buyruq hisoblanadi. U orqali:
- kodni ishga tushirish;
- kodni kompilyatsiya qilish;
- testlarni bajarish;
- modul va paketlar bilan ishlash
kabi amallar bajariladi.
gofmt esa Go kodini standart formatga keltiradi. Masalan, chekinishlar, qavslar va bo‘sh joylar Go uslubiga moslashtiriladi.
Kod muharriri oddiy matn muharririga o‘xshaydi, lekin dastur kodini yozish uchun qo‘shimcha imkoniyatlar beradi. Masalan, sintaksisni rang bilan ajratish, xatolarni ko‘rsatish yoki kodni avtomatik formatlash imkoniyati bo‘lishi mumkin.
Masalan, Visual Studio Code yoki o‘zingizga qulay boshqa muharrirdan foydalanishingiz mumkin.
Terminal — buyruqlarni matn ko‘rinishida kiritish va bajarish imkonini beradigan dastur.
Operatsion tizimga qarab turli terminal dasturlaridan foydalanish mumkin:
- Windows’da PowerShell;
- macOS’da Terminal;
- Linux’da terminal emulatorlaridan biri.
Terminaldagi buyruqlar odatda joriy papkaga nisbatan bajariladi. Joriy papka — terminal hozir qaysi katalog ichida turganini bildiradi.
Masalan, main.go fayli bir papkada bo‘lsa, lekin terminal boshqa papkada turgan bo‘lsa, go run main.go buyrug‘i faylni topa olmasligi mumkin.
Shu sababli kod qayerda saqlanganini va terminal qaysi papkada turganini bilish muhim.
.go kengaytmali fayl Go manba fayli hisoblanadi. Masalan:
Lekin quyidagi fayl Go manba fayli emas:
Bu faylning haqiqiy kengaytmasi .txt. Fayl nomida .go yozilgan bo‘lsa ham, oxirgi kengaytma .txt bo‘lgani uchun Go uni oddiy .go fayl sifatida qabul qilmaydi.
Go’ni o‘rnatish
Go’ni operatsion tizimingiz uchun rasmiy o‘rnatish qo‘llanmasi yordamida o‘rnating.
O‘rnatish tugagach, yangi terminal oynasini oching. Keyin quyidagi buyruqni kiriting:
Bu buyruq kompyuteringizga o‘rnatilgan Go haqidagi qisqa ma’lumotni chiqaradi.
Natija umumiy holda quyidagi shaklda bo‘ladi:
Masalan, natijada quyidagiga o‘xshash qism bo‘lishi mumkin:
Bu yerda:
linux— operatsion tizim;amd64— protsessor arxitekturasi.
Sizdagi qiymatlar boshqacha bo‘lishi mumkin. Masalan, macOS’da darwin, ARM protsessorli qurilmada esa arm64 ko‘rinishi mumkin.
Hozir aniq versiya yoki arxitektura nomini yodlash shart emas. Muhimi, buyruq xatosiz bajarilishi va natija go version bilan boshlanishi.
Warning
Agar terminal go buyrug‘ini topa olmasa, avval terminalni yopib, qayta oching.
Ba’zi operatsion tizimlarda o‘rnatish vaqtida `PATH` muhit o‘zgaruvchisi yangilanadi, lekin avval ochilgan terminal bu o‘zgarishni darhol ko‘rmasligi mumkin.
Muammo davom etsa, Go’ni o‘rnatish bosqichlarini va `PATH` muhit o‘zgaruvchisi sozlamasini rasmiy qo‘llanma asosida tekshiring.
Go muhiti haqida batafsilroq ma’lumotni quyidagi buyruq bilan ko‘rish mumkin:
Bu buyruq Go ishlatayotgan ko‘plab muhit sozlamalarini chiqaradi.
Masalan:
GOOS— maqsad operatsion tizimi;GOARCH— maqsad protsessor arxitekturasi;GOPATH— Go bilan bog‘liq ayrim fayllar saqlanadigan ish muhiti yo‘llaridan biri.
Hozir bu qiymatlarni o‘zgartirish shart emas. Yangi boshlayotgan paytda ularning barchasini tushunish ham talab qilinmaydi.
Lekin keyinchalik muammo yuz bersa, go env natijasi Go qaysi muhit va sozlamalar bilan ishlayotganini aniqlashga yordam beradi.
Terminalda papka bilan ishlash
Har bir dars yoki kichik loyiha uchun alohida papka yaratish foydali. Bu fayllarning bir-biriga aralashib ketishining oldini oladi.
Masalan, go-darslar nomli umumiy papka yaratamiz. Uning ichida esa birinchi dastur uchun birinchi-dastur papkasini yaratamiz.
macOS va Linux’da:
Birinchi buyruq:
kerakli papkalarni yaratadi.
Bu yerda -p flagi oraliq papkalar mavjud bo‘lmasa, ularni ham yaratishga imkon beradi. Masalan, go-darslar papkasi hali mavjud bo‘lmasa, u ham yaratiladi.
Ikkinchi buyruq:
terminalning joriy papkasini birinchi-dastur papkasiga o‘zgartiradi.
PowerShell’da shu ish quyidagicha bajariladi:
New-Item -ItemType Directory -Force go-darslar/birinchi-dastur
Set-Location go-darslar/birinchi-dastur
Birinchi buyruq katalog yaratadi:
Bu yerda -ItemType Directory yangi obyekt papka bo‘lishini bildiradi. -Force esa kerakli holatlarda mavjud struktura bilan ishlashni qulaylashtiradi.
Ikkinchi buyruq:
joriy papkani birinchi-dasturga o‘zgartiradi.
Keyingi darsda main.go faylini aynan shu papkada yaratamiz.
Terminal qaysi papkada turganini tekshirish ham muhim.
macOS va Linux’da:
PowerShell’da:
Bu buyruqlar joriy papkaning to‘liq yo‘lini ko‘rsatadi.
Papkadagi fayllarni ko‘rish uchun macOS va Linux’da:
PowerShell’da:
buyrug‘idan foydalanish mumkin.
Agar go run main.go buyrug‘i fayl topilmadi degan xato bersa, birinchi tekshiriladigan narsalardan biri aynan joriy papkadir.
Go kodini ishga tushirish
main.go kabi bajariladigan Go dasturi tayyor bo‘lgach, uni quyidagi buyruq bilan ishga tushirish mumkin:
go run bir nechta ishni ketma-ket bajaradi.
Avval Go manba kodini tekshiradi va kompilyatsiya qiladi. Keyin vaqtinchalik bajariladigan fayl yaratadi. Shundan so‘ng shu dasturni darhol ishga tushiradi.
Oddiy ko‘rinishda jarayonni shunday tasavvur qilish mumkin:
Bu usul darslar, kichik misollar va tezkor tekshiruvlar uchun juda qulay.
Vaqtinchalik bajariladigan faylni odatda qo‘lda topish yoki boshqarish talab qilinmaydi. go run bu jarayonni o‘zi boshqaradi.
Agar dasturni keyin ham qayta ishlatish uchun alohida bajariladigan fayl yaratmoqchi bo‘lsangiz, go builddan foydalanish mumkin:
Bu buyruqda:
go build— kodni kompilyatsiya qiladi;-o app— natijadagi bajariladigan fayl nominiappdeb belgilaydi;main.go— kompilyatsiya qilinadigan Go fayli.
Natijada joriy papkada app nomli bajariladigan fayl yaratiladi.
Windows’da uning nomi odatda:
ko‘rinishida bo‘ladi.
Linux va macOS’da esa odatda:
ko‘rinishida bo‘ladi.
go run va go build ikkalasi ham Go kodini kompilyatsiya qiladi. Lekin ularning maqsadi biroz farq qiladi.
go run dastur kodini tezda sinab ko‘rish uchun qulay. U dasturni kompilyatsiya qiladi va darhol ishga tushiradi.
go build esa bajariladigan faylni saqlab qoldiradi. Keyin uni Go manba kodini qayta ko‘rsatmasdan ishga tushirish mumkin.
Go kodi standart ko‘rinishda bo‘lishi uchun gofmtdan foydalaniladi:
Bu yerda -w parametri muhim.
U gofmtga formatlangan natijani terminalga chiqarish o‘rniga, shu faylning o‘ziga qayta yozishni aytadi.
Masalan, noto‘g‘ri chekinish bilan yozilgan kod gofmtdan keyin Go’ning standart formatiga keladi.
gofmt asosan:
- chekinishlarni;
- bo‘sh joylarni;
- qatorlarning standart ko‘rinishini
tartibga keltiradi.
Lekin u dastur mantig‘idagi xatoni tuzatmaydi.
Masalan, dastur ikki sonni qo‘shishi kerak bo‘lsa, lekin siz tasodifan ularni ayirib yuborgan bo‘lsangiz, gofmt buni aniqlab tuzatmaydi. Chunki bu formatlash emas, mantiq bilan bog‘liq xato.
Ba’zi kod muharrirlari fayl saqlanganda gofmtni avtomatik ishga tushirishi mumkin. Bu kodni doim bir xil uslubda saqlashga yordam beradi.
Xato xabarini qanday o‘qish kerak?
Dastur birinchi urinishda ishlamasligi odatiy holat. Dasturlashda xato xabarlari ish jarayonining oddiy qismidir.
Muhimi, xato xabarini faqat “dastur ishlamadi” degan belgi sifatida ko‘rmaslik kerak. U ko‘pincha muammoni topish uchun aniq ma’lumot beradi.
Kompilyator xabari odatda quyidagilarni ko‘rsatadi:
- fayl nomi;
- qator raqami;
- ustun raqami;
- aniqlangan muammo haqida xabar.
Masalan:
yozuvi muammo main.go faylining 5-qatori, 2-ustuni yaqinida aniqlanganini bildiradi.
Buni quyidagicha ajratish mumkin:
Lekin kompilyator ko‘rsatgan joy har doim ham xatoning haqiqiy boshlangan joyi bo‘lavermaydi.
Masalan, oldingi qatorda yopilmagan qo‘shtirnoq bo‘lsa, kompilyator keyingi qatorga kelganda sintaksisni tushuna olmay qolishi mumkin. Natijada xato keyingi qatorda ko‘rsatiladi.
Shu sababli xato ko‘rsatilgan qatordan tashqari, undan oldingi bir necha qatorni ham tekshirish foydali.
Xatolarni umumiy ma’noda uch guruhga ajratish mumkin.
Kompilyatsiya xatosi
Kompilyatsiya xatosi kod Go qoidalariga mos kelmaganda yuz beradi.
Masalan:
- sintaksis noto‘g‘ri;
- kerakli qavs yopilmagan;
- o‘zgaruvchi noto‘g‘ri turdagi qiymat bilan ishlatilgan;
- mavjud bo‘lmagan nomga murojaat qilingan.
Bunday holatda dastur odatda ishga tushmaydi. Avval kompilyatsiya xatosini tuzatish kerak.
Runtime xato
Bajarilish vaqtidagi xato yoki runtime error dastur muvaffaqiyatli kompilyatsiya qilinganidan keyin yuz beradi.
Ya’ni dastur ishga tushadi, lekin ishlash jarayonida muammo sabab to‘xtaydi.
Bu turdagi xatolarni keyingi darslarda aniq misollar bilan ko‘ramiz.
Hozircha muhim farq shuki:
kompilyatsiya xatosi → dastur ishga tushmaydi
runtime xato → dastur ishga tushadi, keyin bajarilish vaqtida to‘xtaydi
Mantiqiy xato
Mantiqiy xatoda dastur kompilyatsiyadan o‘tadi va ishga tushadi. Lekin natija noto‘g‘ri bo‘ladi.
Masalan, ikki sonni qo‘shish kerak bo‘lgan joyda ularni ayirish mantiqiy xatoga sabab bo‘lishi mumkin.
Bunday xatoda kompilyator har doim yordam bera olmaydi. Chunki kod sintaktik va tur jihatdan to‘g‘ri bo‘lishi mumkin.
Shu sababli dastur natijasini tahlil qilish ham kod yozishning muhim qismidir.
Darslar bilan ishlash tartibi
Har bir misol bilan ishlaganda quyidagi tartib foydali:
- Kodni muharrirda yozing va faylni saqlang.
- Dasturni ishga tushirishdan oldin natija qanday bo‘lishini taxmin qiling.
go run main.gobilan dasturni ishga tushiring.- Chiqqan natija yoki xato xabarini yozgan kodingiz bilan solishtiring.
Ikkinchi qadam ayniqsa foydali. Natijani oldindan taxmin qilish sizni kodni faol tahlil qilishga majbur qiladi.
Agar haqiqiy natija taxminingizdan farq qilsa, “nega?” degan savol paydo bo‘ladi. Aynan shu savol mavzuni chuqurroq tushunishga yordam beradi.
Agar buyruq bajarilmasa, darhol kodni butunlay qayta yozishga shoshilmang.
Avval quyidagilarni tekshiring:
- terminal to‘g‘ri papkada turibdimi;
main.gofayli shu papkada mavjudmi;- fayl saqlanganmi;
- fayl nomi haqiqatan
main.gomi; - xato xabarida qaysi fayl va qator ko‘rsatilgan.
Xato xabarining faqat oxirgi so‘zini o‘qish yetarli emas. Fayl nomi, qator raqami va xabarning to‘liq matni birgalikda muammoni tushunishga yordam beradi.
Birinchi dasturimiz darsida main.go fayliga ilk Go kodimizni yozamiz. Keyin uni terminal orqali ishga tushiramiz va kodning har bir qismini bosqichma-bosqich tahlil qilamiz.