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:

  1. Go kompilyatorigo.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.)
  2. Kod muharririVS 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 Print funksiyasidan foydalana olaylik.

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.go

go 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-app

Bu go.mod faylini yaratadi — endi loyihangiz modul. So'ng:

go build

natijada ishga tushiriladigan fayl hosil bo'ladi (./first-app yoki Windows'da first-app.exe).

Aynan shu sabab paket main va funksiya main bo'lishi shart: go build ularsiz "qayerdan boshlash"ni bilmaydi va hech qanday fayl yaratmaydi.


FunksiyaNima qiladi
fmt.PrintMatnni chiqaradi, oxirida yangi qatorga o'tmaydi
fmt.PrintlnMatnni 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

  1. Kodni qo'lda yozing (nusxa ko'chirmang) va go run app.go bilan ishga tushiring.
  2. Hello World! o'rniga o'z ismingizni chiqaring.
  3. Print ni Println ga almashtiring — natija qanday o'zgaradi?
  4. package main ni package test ga o'zgartirib ishga tushiring — qanday xato chiqadi? (Xatoni o'qish ham o'rganishning bir qismi.)
  5. go mod init example.com/first-app qilib, keyin go build bilan bajariladigan fayl yasang va uni ./first-app orqali ishga tushiring.

→ Keyingi: 2-dars — O'zgaruvchilar va tiplar