Sintaksis — dasturlash tilining yozuv qoidalari to’plami. Go’ning sintaksisi ataylab qattiq va yagona standartga solingan — bu tasodif emas, balki tilning asosiy falsafasi: bitta ishni qilishning bitta to’g’ri yo’li.
Sintaksis — tilda kod qanday yozilishi kerakligini belgilovchi qoidalar majmuasi. Go’da bu qoidalar kompilyator tomonidan qat’iy talab qilinadi — hatto formatlash ham.
Avtomatik nuqta-vergul va majburiy qavs joyi
Go kompilyator ichida har qator oxiriga avtomatik nuqta-vergul qo’yadi — shu sababli ochiluvchi figurali qavs ({) albatta shu qatorning o’zida turishi shart:
package main
func main() {
}
Agar { keyingi qatorga tushirilsa (func main()\n{), kompilyator xato beradi: avtomatik nuqta-vergul main()dan keyin qo’yiladi va qavs “osilib” qoladi. Shuning uchun Go’da else ham oldingi } bilan bir qatorda yozilishi shart.
gofmt — yagona rasmiy format
Go tarqatmasi bilan birga keladigan gofmt vositasi kodni avtomatik, munozarasiz formatlaydi. Chuqurlik (indentatsiya)siz, notekis yozilgan faylni tasavvur qiling:
package main
import "fmt"
func main() {
fmt.Println("test")
}
Shu faylga nisbatan go fmt salom.go buyrug’ini ishga tushirsak:
salom.go
Buyruq faylni joyida qayta yozadi — qatorlarni tab bilan chekinishga, importni alohida qatorga joylashtiradi. Terminalda faqat o’zgargan fayl nomi chiqadi; agar fayl allaqachon to’g’ri formatda bo’lsa, go fmt sukut saqlaydi. Shu sabab Go loyihalarida “tab yoki probel” kabi uslub bahslari deyarli yo’q — hamma bir xil formatlaydi.
Ishlatilmagan narsa — kompilyatsiya xatosi
Go’da e’lon qilingan, lekin ishlatilmagan o’zgaruvchi yoki import — ogohlantirish emas, to’liq kompilyatsiya xatosi:
package main
import "fmt"
func main() {
x := 5
fmt.Println("salom")
}
# command-line-arguments
./salom.go:6:2: x declared and not used
x e’lon qilindi, ammo hech qayerda ishlatilmadi — dastur umuman kompilyatsiya bo’lmaydi. Bu, boshqa ko’p tillardan farqli, o’lik kodni loyihada qoldirmaslikka majburlaydigan qat’iy qoida.
Eksport qilingan va qilinmagan nomlar
Go’da public/private kalit so’zlari yo’q — ko’rinish darajasi nom birinchi harfining registriga qarab belgilanadi:
package main
import "fmt"
func Salomlash() {
fmt.Println("Bu funksiya boshqa paketlardan ham ko'rinadi")
}
func salomlash() {
fmt.Println("Bu funksiya faqat shu paket ichida ko'rinadi")
}
func main() {
Salomlash()
salomlash()
}
Bu funksiya boshqa paketlardan ham ko'rinadi
Bu funksiya faqat shu paket ichida ko'rinadi
Salomlash (katta harf) — eksport qilingan, boshqa paketlar uni ko’ra oladi. salomlash (kichik harf) — faqat shu paket ichida ko’rinadi. Bir xil paket ichida ikkalasi ham ishlaydi, farq faqat tashqi paketlardan murojaat qilinganda bilinadi.