Section 1
1-dars — Birinchi Go dasturi
Go nima, uni o'rnatish, paketlar va modullar hamda birinchi Hello World dasturi
Birinchi darsda Go tili bilan tanishamiz, uni ishga tushiramiz va eng oddiy dasturni — Hello World! ni yozamiz. Maqsad: har bir qatorni tushunish, yodlamaslik.
Go nima va nega zo'r?
Go (yoki Golang) — Google tomonidan yaratilgan ochiq kodli dasturlash tili. 2007-yilda ishlab chiqilgan, 2009-yilda omma e'tiboriga havola etilgan. Asosiy xususiyatlari:
- Soddalik va ravshanlik — til kichik, o'rganish oson
- Kompilyatsiya qilinadi — kod ishlashdan oldin mashina kodiga aylantiriladi (tez ishlaydi)
- Statik tipli (statically typed) — har bir qiymatning aniq tipi bor, bu ko'p xatoni erta (dastur yozayotganda) topishga yordam beradi
- Boy standart kutubxona — ko'p narsa tilning o'ziga o'rnatilgan, tashqi kutubxona kam kerak
- Konkurentlik (bir vaqtda bir nechta ishni bajarish) ga kuchli e'tibor
Shu sabab Go ayniqsa API va tarmoq ilovalari, mikroservislar va CLI (terminal) vositalarini yozishda mashhur.
Bu kurs (Maximilian Schwarzmüller) oxirida to'liq REST API quriladi. Lekin avval mana shu asoslarni puxta o'rganamiz.
O'rnatish va muharrir
Go kodini yozish uchun ikki narsa kerak:
- Go kompilyatori — go.dev saytidan o'z operatsion tizimingizga mos versiyani yuklab oling va o'rnating. (O'rnata olmasangiz — go.dev'dagi web "playground" yoki kursdagi Code Sandbox'dan ham foydalansa bo'ladi, hech narsa o'rnatmasdan.)
- Kod muharriri — VS Code (bepul) tavsiya etiladi. Uni ochib, rasmiy Go kengaytmasini (extension) o'rnating — u xatolarni erta ko'rsatadi va kod yozishni osonlashtiradi.
O'rnatilganini tekshirish: terminalda go version yozing.
To'liq kod
Bo'sh papka yarating, ichida app.go faylini oching va yozing:
package main
import "fmt"
func main() {
fmt.Print("Hello World!")
}Bu 5 qatorda Go dasturining barcha asosiy qismlari bor. Endi har birini ko'rib chiqamiz.
Qator-qator tushuntirish
package main
Har bir Go fayli qaysidir paketga (package) tegishli bo'lishi shart — bu faylning eng birinchi qatori. Paket — kodlarni guruhlash usuli. Katta loyihalar ko'p paketdan iborat bo'ladi (masalan fmt ham paket).
main — bu maxsus nom. U Go'ga "bu — ishga tushiriladigan dasturning kirish nuqtasi" deb bildiradi. Agar bu qatorni o'chirsangiz, Go xato beradi: "expected package, found import".
import "fmt"
import — boshqa paketdagi tayyor kodni olib kelish. fmt (qisqartma: format) — Go bilan birga keladigan standart paket; ichida ekranga yozish funksiyalari bor (Print, Println, Printf).
fmt— biz yozmagan paket, uni standart kutubxonadan import qilamiz, toki undagi
func main()
func — funksiya yaratish so'zi. main — yana maxsus nom: dastur ishga tushganda Go aynan main funksiyasidan boshlaydi.
Muhim: Go kodni faylning boshidan to oxirigacha ketma-ket o'qib bajarmaydi (JavaScript'dan farqli). Shuning uchun asosiy kod funksiya ichida bo'lishi shart. Va har bir ishga tushadigan dasturda bitta main funksiyasi bo'lishi kerak.
fmt.Print("Hello World!")
fmt paketidagi Print funksiyasini chaqiramiz. Qavs ichidagi "Hello World!" — ekranga chiqadigan matn (string). Go'da stringlar har doim qo'shtirnoq ichida ("...") yoziladi — bir tirnoq ('...') ishlamaydi.
Ishga tushirish: go run
Faylni saqlang, terminalni oching va yozing:
go run app.gogo run kodni kompilyatsiya qilib, darhol ishga tushiradi — o'rganish bosqichida eng qulay buyruq. Natija:
Hello World!
Modullar: go mod init va go build
Hozir biz go run app.go bilan ishga tushirdik. Lekin dasturni boshqalarga tayyor fayl sifatida bermoqchi bo'lsangiz (ularda Go o'rnatilmagan bo'lishi mumkin), go build bilan bajariladigan fayl (executable) yasaysiz.
Buning uchun loyiha modul bo'lishi kerak. Modul — odatda bitta Go loyihasi (bir nechta paketdan iborat bo'lishi mumkin). Terminalda:
go mod init example.com/first-appBu go.mod faylini yaratadi — endi loyihangiz modul. So'ng:
go buildnatijada ishga tushiriladigan fayl hosil bo'ladi (./first-app yoki Windows'da first-app.exe).
Aynan shu sabab paket
mainva funksiyamainbo'lishi shart:go buildularsiz "qayerdan boshlash"ni bilmaydi va hech qanday fayl yaratmaydi.
Print va Println farqi
| Funksiya | Nima qiladi |
|---|---|
fmt.Print | Matnni chiqaradi, oxirida yangi qatorga o'tmaydi |
fmt.Println | Matnni chiqaradi va yangi qatorga o'tadi |
fmt.Println("Salom")
fmt.Println("Dunyo")Natija ikki qatorda chiqadi.
Qotib qolsangiz
Max'ning rasmiy kod namunalari (snapshotlar) shu yerda: github.com/mschwarzmueller/go-complete-guide-resources. O'z kodingizni u bilan solishtirib, farqni topishingiz mumkin.
O'zingiz sinab ko'ring
- Kodni qo'lda yozing (nusxa ko'chirmang) va
go run app.gobilan ishga tushiring. Hello World!o'rniga o'z ismingizni chiqaring.PrintniPrintlnga almashtiring — natija qanday o'zgaradi?package mainnipackage testga o'zgartirib ishga tushiring — qanday xato chiqadi? (Xatoni o'qish ham o'rganishning bir qismi.)go mod init example.com/first-appqilib, keyingo buildbilan bajariladigan fayl yasang va uni./first-apporqali ishga tushiring.
→ Keyingi: 2-dars — O'zgaruvchilar va tiplar