Goni kompyuteringizda o'rnatib ishga tushirish ortiqcha qiyinchilik tug'dirmaydi, va bu bejiz emas — vositalar to'plami (toolchain) bitta ixcham o'rnatuvchi fayldan iborat: alohida runtime ham, oldindan sozlanadigan paket menejeri ham talab qilinmaydi, versiyalarni moslash bilan bog'liq muammolar esa o'z-o'zidan paydo bo'lmaydi. Ushbu bobda Goni Windows, macOS va Linux tizimlariga o'rnatishni, vositalar to'plamining muhit parametrlarini tushunishni, birinchi dasturni yozib ishga tushirishni hamda boshlang'ich davrda ko'p uchraydigan ayrim xatoliklarni bartaraf etishni ko'rib chiqamiz.
Go relizlarining rasmiy manbasi — go.dev/dl, u qo'llab-quvvatlanadigan har bir platforma va arxitektura uchun tayyor o'rnatuvchi fayllarni taklif qiladi.
Norasmiy manbalardan (mirror) emas, aynan rasmiy sahifadan yoki ishonchli paket menejeri orqali yuklab olgan ma'qul, chunki Go loyihasi o'z relizlarini kriptografik imzo bilan tasdiqlaydi va siz xavfsiz vositalar to'plami ustida ishlashingiz zarur.
macOSda ko'pchilik uchun eng oson yo'l — rasmiy .pkg o'rnatuvchisi. U Goni /usr/local/go papkasiga joylaydi va PATH ni avtomatik sozlaydi. Agar siz allaqachon Homebrew'dan foydalansangiz, brew install go buyrug'i ham qulay bo'lib, kelajakdagi yangilanishlarni bitta brew upgrade go buyrug'i orqali amalga oshirish mumkin. Ikkala yo'l ham bir xil to'g'ri natijaga olib keladi; o'zingizga qulay bo'lganini tanlang.
Windows'da .msi o'rnatuvchisini yuklab olib ishga tushiring. O'rnatuvchi Goni tizim PATH o'zgaruvchisiga qo'shadi va kerakli ro'yxat yozuvlarini yaratadi. Natijada yangi ochilgan PowerShell yoki Command Prompt oynasida go buyrug'i darhol ishlay boshlaydi.
Linux'da esa oldingizda ikkita yo'l turadi. Distributivingizning paket menejeri (Debian/Ubuntu'da apt install golang-go, Fedora'da dnf install golang) — eng oson yo'l, lekin distributiv bilan keladigan Go ko'pincha rasmiy versiyadan bir necha pog'ona orqada bo'ladi, chunki u distributivning o'z reliz jadvali bo'yicha yangilanadi. Amaliy loyihalar uchun rasmiy arxivni (tarball) to'g'ridan-to'g'ri o'rnatish orqali eng so'nggi versiyaga ega bo'lishingiz mumkin:
# avval oldingi o'rnatmani o'chiring
sudo rm -rf /usr/local/go
# yangisini ochib joylang (fayl nomini joriy reliz nomi bilan almashtiring)
sudo tar -C /usr/local -xzf go1.27.1.linux-amd64.tar.gz
# shell uni topa olishiga ishonch hosil qiling
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
Qaysi platformada bo'lmang, o'rnatishni quyidagi buyruq bilan tekshiring:
go version
Siz go version go1.27.1 linux/amd64 kabi natijani ko'rishingiz kerak. Bu satrlar yozilayotgan paytda Go 1.27 joriy barqaror reliz hisoblanadi, ammo aniq patch versiyasi buyruqning to'g'ri ishlayotganini tasdiqlashchalik muhim emas. Ushbu kitobdagi barcha mavzular Go 1.22 va undan keyingi versiyalarga to'liq mos keladi. Agar buyruq o'rniga "command not found" degan xabarni olsangiz, quyidagi muammolarni hal qilish bo'limiga qarang.
Bu yangi boshlovchilarda eng ko'p uchraydigan to'siq bo'lib, u deyarli har doim noto'g'ri o'rnatish emas, balki
PATHsozlamasidagi kamchilik tufayli yuzaga keladi.
Go o'rnatilgach, u tayanadigan bir nechta muhit o'zgaruvchisini (environment variables) tushunib olish foydali, chunki ular keyinchalik tizimning ishlash mantiqini tushunishga yordam beradi. To'liq ro'yxatni ko'rish uchun istalgan paytda go env buyrug'ini ishga tushiring; eng muhimlari quyidagilardir:
GOROOT — Go distributivining o'zi joylashgan asosiy papka: kompilyator, standart kutubxona manba kodi va asosiy buyruqlar. Buni qo'lda o'zgartirishga deyarli hech qachon ehtiyoj bo'lmaydi: o'rnatuvchi uni avtomatik sozlaydi, hatto sozlanmagan taqdirda ham Go uni o'z binar faylining joylashuvidan topib oladi.
GOPATH — Goda to'laqonli paket menejeri paydo bo'lishidan oldingi davrdan qolgan meros. Go 1.11 da modullar joriy etilgunga qadar har bir Go loyihasi $GOPATH/src ichida joylashishi shart edi va barcha importlar aynan o'sha bitta papkaga nisbatan aniqlanardi.
Modullar tizimi bu cheklovni bekor qildi — endi kodingiz diskning istalgan joyida turishi mumkin — ammo
GOPATHbutunlay yo'qolmadi, uning vazifasi o'zgardi.
Bugun u asosan go install kompilyatsiya qilingan ikkilik fayllarni qayerga qo'yishini ($GOPATH/bin) va modullar keshi qayerda turishini ($GOPATH/pkg/mod, odatda GOMODCACHE orqali ko'rsatiladi) belgilaydi. Agar uni hech qachon o'rnatmasangiz, Go Unix'simon tizimlarda ~/go ni, Windows'da esa %USERPROFILE%\go ni standart qiymat sifatida oladi, va bu standart qiymat deyarli hamma uchun yetarli.
GOMODCACHE — yuklab olingan modullar manba kodi barcha loyihalaringiz uchun keshlanadigan joy. Shu sababli kompyuteringizdagi ikki loyiha bitta kutubxonaning bir xil versiyasiga bog'liq bo'lsa, u faqat bir marta yuklab olinadi va tekshiriladi.
GOOS va GOARCH — build uchun mo'ljallangan operatsion tizim va protsessor arxitekturasini bildiradi: linux/amd64, darwin/arm64, windows/amd64 va hokazo. Lokal ishlab chiqishda ularga kamdan-kam tegiladi, chunki Go standart holda siz ishlayotgan kompyuter uchun build qiladi. Ammo kross-kompilyatsiya kerak bo'lgan paytda ular muhim ahamiyat kasb etadi — buni asosiy buyruqlar haqidagi bobda ko'rib chiqamiz.
To'liq go env natijasini varaqlab o'tirmasdan, istalgan bitta o'zgaruvchini to'g'ridan-to'g'ri ko'rishingiz mumkin:
go env GOROOT
go env GOPATH
go env GOMODCACHE
Go 1.23 dan boshlab go env -changed sozlamalaringizni tekshirishning tezroq usuli bo'lib xizmat qiladi, ayniqsa go env -w bilan o'zgartirish kiritganingizdan keyin: u go env shartsiz chiqaradigan o'nlab qatorlar o'rniga faqat siz standart qiymatidan o'zgartirgan sozlamalarni ko'rsatadi.
Go kodni modullarga ajratib tashkil qiladi, va hatto bitta fayldan iborat dastur ham modul ichida bo'lgani ma'qul, chunki asboblar to'plamining qolgan qismi — bog'liqliklarni aniqlash, build'lar, testlar — aynan modul chegarasiga tayanib ish ko'radi. Papka yarating, modulni ishga tushiring va fayl yozing:
mkdir hello && cd hello
go mod init hello
Bu go.mod faylini hosil qiladi, hozircha atigi ikki qatordan iborat:
module hello
go 1.27
Endi main.go faylini yarating:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
To'rt qator, va ularning har biri haqiqiy ish bajaryapti. package main bu faylni maxsus main paketiga tegishli deb belgilaydi — asboblar to'plami kutubxona emas, ishga tushiriladigan dasturga aylantiradigan yagona paket turi shu. import "fmt" standart kutubxonaning formatlash paketini olib keladi. E'tibor bering: import majburiy va aniq ko'rsatiladi.
Go kompilyatori ishlatilmagan importni linter ogohlantirishi emas, kompilyatsiya xatosi deb hisoblaydi — bu kichik, ammo ataylab qilingan dizayn qarori bo'lib, keyingi bobda batafsilroq yoritiladi.
func main() — kirish nuqtasi: bu paketni ishga tushirganingizda yoki build qilganingizda bajarilish aynan shu yerdan boshlanadi, boshqa hech qayerdan emas. fmt.Println esa satrni va uning ortidan yangi qator belgisini standart chiqishga yozadi.
Uni bajarishning ikki yo'li bor. go run main.go dasturni vaqtinchalik xotirada kompilyatsiya qilib, darhol ishga tushiradi va tugagach, hosil bo'lgan vaqtinchalik fayllarni o'chiradi — bu kodni tezda sinab ko'rish uchun juda qulay, chunki papkangizda ortiqcha ikkilik fayllar qolmaydi. go build esa doimiy, statik bog'langan bajariladigan (binar) fayl hosil qiladi (Unix/macOSda hello, Windows'da hello.exe). Uni xuddi shunday operatsion tizim va arxitekturadagi boshqa kompyuterga ko'chirib, hech qanday qo'shimcha paketlarsiz to'g'ridan-to'g'ri ishga tushirish mumkin: runtime ham, interpretator ham, deploy paytida kutubxonalarni o'rnatish ham talab qilinmaydi.
Aynan shu bitta binar fayl xususiyati Goning buyruqlar satri (CLI) vositalari va bulutli infratuzilma dasturlari orasida keng ommalashishining asosiy sabablaridan biridir: deploy ko'pincha shunchaki faylni serverga nusxalash (
scp) va ishga tushirish huquqini berish (chmod +x) bilan hal bo'ladi.
go run main.go # kompilyatsiya qilib ishga tushiradi, ikkilik fayl qolmaydi
go build # ./hello (yoki hello.exe) hosil qiladi
./hello
Istalgan matn muharriri ish beradi, ammo qulay ishlab chiqish uchun bir nechta vosita tavsiya etiladi. Rasmiy Go kengaytmasiga ega VS Code (kengaytma Go jamoasining o'zi tomonidan qo'llab-quvvatlanadi) — eng ommabop boshlang'ich tanlov: u gopls (Go rasmiy til serveri) bilan ishlaydi hamda kod ichida xatolarni ko'rsatish, avtoto'ldirish, saqlashda avtomatik formatlash, statik tahlil (go vet) va funksiya ta'rifiga o'tish imkoniyatlarini taqdim etadi. JetBrains'ning Go uchun maxsus IDE'si — GoLand yanada chuqurroq refaktoring vositalarini taklif qiladi va professional ishlab chiqish uchun o'zini to'liq oqlaydi. Agar siz Vim/Neovim yoki Emacs muxlisi bo'lsangiz, vim-go va go-mode plaginlari orqali xuddi shu gopls til serveriga tayangan qulay muhitga ega bo'lasiz.
Qaysi muharrirni tanlamang, eng muhimi —
goplsvositasining to'g'ri ishlashidir. Saqlashda formatlash, kod diagnostikasi va avtoto'ldirish imkoniyatlarining barchasi aynangoplsorqali ta'minlanadi.
Dastlabki kunlarda yangi o'rganuvchilar duch keladigan asosiy muammolarning aniq tahlili:
"go: command not found" deyarli har doim Go binar fayllari joylashgan papka terminalingizning PATH o'zgaruvchisiga qo'shilmaganini bildiradi. Odatda buning sababi — Goni o'rnatgach, terminalni qayta ochmaganingiz, yoki o'rnatish skripti boshqa shell sozlama faylini (.zshrc, .bashrc, .profile) o'zgartirganidir. echo $PATH | tr ':' '\n' | grep go buyrug'i orqali Go yo'li borligini tekshiring va yetishmayotgan yo'lni (/usr/local/go/bin) o'z shell konfiguratsiya faylingizga qo'shing.
"no required module provides package X" kabi modul xatoliklari yo go.mod faylingiz yo'qligini (go mod init <nom> buyrug'ini ishga tushiring), yo yangi qo'shilgan tashqi paket hali yuklab olinmaganini bildiradi (go mod tidy buyrug'ini bering, u kerakli paketlarni avtomatik yuklab oladi va keshlaydi).
go.mod bilan o'rnatilgan asboblar to'plami orasidagi versiya nomuvofiqligi — agar loyiha sizdagi Go versiyasidan yangirog'ini talab qilsa, Go 1.21 dan boshlab vositalar to'plami buni o'zi avtomatik yuklab olib hal qila oladi. Agar bu imkoniyat o'chiq bo'lsa, lokal Go versiyangizni yangilang yoki go mod edit -go=1.27 orqali talab qilingan minimal versiyani moslang.
Muharrir Go kodidagi xatolarni ko'rsatmay qolsa — qizil to'lqinli chiziqlar va avtoto'ldirish ishlamasa, odatda gopls o'rnatilmagan yoki ishga tushmay qolgan bo'ladi. VS Codeda Command Palette (Ctrl+Shift+P yoki Cmd+Shift+P) ochib, "Go: Install/Update Tools" buyrug'ini bajaring.
Bir vaqtning o'zida bir nechta Go versiyasi kerak bo'lsa (masalan, turli versiyalarda testlash uchun), Go vositalar to'plamining o'zi buni qo'shimcha dasturlarsiz qo'llab-quvvatlaydi: go install golang.org/dl/go1.26.0@latest va go1.26.0 download buyruqlari sizga asosiy go bilan bir qatorda parallel ishlovchi go1.26.0 buyrug'ini beradi.
Go o'rnatilgan, tekshirilgan va muharrir gopls ga to'g'ri ulangan bo'lsa, loyiha yaratishga tayyorsiz. Keyingi bobda loyihalar qanday tuzilishi: paket nima, modul nima va ular repozitoriy bilan qanday bog'lanishi haqida gaplashamiz.