1-bo‘lim

Go bilan tanishuv

Go ni kim va nima uchun yaratgan, nomi qayerdan kelgan, u qayerda ishlatiladi va birinchi dastur qanday tuzilgan.

🕑 10 daqiqa o‘qish 📄 1 108 so‘z 👁 0 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Birinchi dastur
  2. Nomi qayerdan kelgan
  3. Uni kim yaratgan
  4. Nega yangi til kerak bo'ldi
  5. Vaqt chizig'i
  6. Go qayerda ishlatiladi
  7. Biroz kattaroq misol
  8. gofmt - bahslar tugadi
  9. Go nimaga o'xshaydi
  10. Uchta e'lon uslubi
  11. Xulosa

Go - Google da yaratilgan dasturlash tili. Uning bosh g'oyasi oddiy: til shunchalik kichik bo'lsinki, uni bir hafta ichida to'liq o'rganish mumkin bo'lsin, lekin katta server dasturlarini yozishga yetarli bo'lsin.

Bugun Docker, Kubernetes, Terraform va minglab veb-xizmatlar aynan Go da yozilgan.

Birinchi dastur #

Go
package main

import "fmt"

func main() {
    fmt.Println("Salom, dunyo!")
}
Natija
Salom, dunyo!

Beshta qator, va ularning har biri kerak. Keling, ularni ajratamiz.

QatorMa'nosi
package mainBu fayl qaysi paketga tegishli
import "fmt"Formatlangan kiritish-chiqarish kutubxonasi
func main()Dastur shu funksiyadan boshlanadi
fmt.Println(...)Ekranga chiqarib, yangi qatorga o'tadi
main - maxsus nom

main nomi Go da ikki joyda maxsus. package main - bu kutubxona emas, ishga tushadigan dastur degani. Uning ichidagi func main() esa kirish nuqtasi.

Agar paketni package hisob deb nomlasangiz, u kutubxona bo'ladi va uni to'g'ridan-to'g'ri ishga tushirib bo'lmaydi.

Nomi qayerdan kelgan #

Go mi yoki Golang mi

Tilning rasmiy nomi - Go. Bor-yo'g'i ikki harf.

Ammo 2009-yilda sayt uchun go.org manzili band edi, shuning uchun jamoa golang.org ni oldi. Odamlar qidiruvda "go" so'zini yozsa, mutlaqo boshqa narsa chiqardi - shuning uchun "golang" deb qidirish odat tusiga kirdi.

Shu tariqa golang nomi paydo bo'ldi. U hamma joyda ishlatiladi, lekin yaratuvchilar doim ta'kidlaydi: til nomi - Go.

Uni kim yaratgan #

Go ni bitta odam emas, uch kishi birga yaratgan. Va ularning uchalasi ham dasturlash tarixidagi mashhur nomlar.

Unix

Ken Tompson (1943-)

Unix operatsion tizimining yaratuvchisi. 1969-yilda Denis Ritchi bilan birga Unix ni yozgan, keyinroq `B` tilini - `C` ning bevosita ajdodini - ishlab chiqqan.

1983-yilda Tyuring mukofoti sovrindori bo'lgan. Rob Payk bilan birgalikda bugun butun internet ishlatadigan UTF-8 kodlashini o'ylab topgan.

Go ga u eng past darajadagi tajribani olib keldi: xotira, jarayonlar va tezlik haqidagi qirq yillik bilim.

UTF-8

Rob Payk (1956-)

Go ning eng ko'p tanilgan ovozi. Kanadalik dasturchi, Bell Labs da Ken Tompson bilan ishlagan va `Plan 9` operatsion tizimini yaratgan jamoada bo'lgan.

U uzoq yillar parallel dasturlash ustida ishlagan. Go dagi gorutinalar va kanallar - aynan o'sha izlanishlarning natijasi. Biz ularni 18- va 19-bo'limlarda o'rganamiz.

V8

Robert Grizemer (1964-)

Kompilyatorlar mutaxassisi. Shveysariyalik dasturchi. Go dan oldin Google da `V8` - bugun `Chrome` va `Node.js` ishlatadigan JavaScript dvigateli - ustida ishlagan.

Undan ham oldin `Java HotSpot` virtual mashinasiga hissa qo'shgan. Go ning tez kompilyatsiya qilinishi ko'p jihatdan uning ishi.

Nega yangi til kerak bo'ldi #

Hammasi kutishdan boshlangan

2007-yilda Google da C++ da yozilgan ulkan dastur bor edi. Uni bir marta to'liq yig'ish (build qilish) soatlab vaqt olardi.

Rob Payk keyinchalik shunday eslaydi: uchalasi build tugashini kutib o'tirishgan va shu payt "agar biz noldan til yozsak, u qanday bo'lardi?" degan suhbat boshlangan.

Uch talab qo'yishdi:

  1. Tez kompilyatsiya - soniyalar, soatlar emas.
  2. Sodda til - kalit so'zlar kam, qoidalar oz.
  3. Parallellik tilning o'zida - kutubxona sifatida emas.

Loyiha o'sha yili 21-sentyabrda boshlandi. Ikki yildan keyin til ochiq kodga chiqarildi.

Go da atigi 25 ta kalit so'z bor. Taqqoslash uchun: C++ da yuzdan ortiq. Bu tasodif emas, balki asosiy qaror: tilga yangi narsa qo'shish uchun juda kuchli sabab kerak.

Vaqt chizig'i #

Go ning rivojlanishi 2007 Boshlanish Google 2009 Ochiq kod E'lon qilindi 2012 Go 1.0 Barqarorlik va'dasi 2015 O'zini o'zi kompilyatsiya qiladi 2018 Modullar go mod 2022 Generiklar Go 1.18 Go 1.0 dan beri til yiliga ikki marta yangilanadi va eski kod ishlashda davom etadi
Go 1 va'dasi

2012-yilda Go jamoasi kam uchraydigan va'da berdi: Go 1 da yozilgan to'g'ri dastur kelajakdagi hamma Go 1.x versiyalarida ishlaydi.

Shuning uchun 2012-yilgi kod bugun ham o'zgarishsiz kompilyatsiya bo'ladi. Bu darslikdagi misollar Go 1.24 da tekshirilgan, lekin ularning deyarli hammasi ancha eski versiyalarda ham ishlaydi.

Go qayerda ishlatiladi #

DasturNima qiladi
DockerDasturlarni konteynerda ishga tushiradi
KubernetesMinglab konteynerni boshqaradi
TerraformServer infratuzilmasini kod bilan quradi
PrometheusTizim holatini kuzatadi
HugoStatik saytlarni yig'adi

Bu ro'yxatda bir qonuniyat bor: hammasi server dasturlari. Go aynan shu ish uchun yaratilgan - bir vaqtda minglab so'rovni qayta ishlaydigan xizmatlar uchun.

Go da o'yin yoki mobil ilova ham yozish mumkin, lekin bu uning kuchli tomoni emas.

Biroz kattaroq misol #

Go
package main

import "fmt"

func main() {
    ism := "Husanboy"
    yosh := 25
    shahar := "Namangan"

    fmt.Println("Ism:", ism)
    fmt.Printf("Yosh: %d\n", yosh)
    fmt.Printf("%s - %s shahridan\n", ism, shahar)
}
Natija
Ism: Husanboy
Yosh: 25
Husanboy - Namangan shahridan

Bu yerda ikki yangi narsa bor:

  • := - o'zgaruvchini e'lon qilib, darhol qiymat berish.
  • Printf - shablon bo'yicha chiqarish. %d son, %s satr o'rniga qo'yiladi. \n - yangi qator.

Println yangi qatorni o'zi qo'shadi, Printf esa qo'shmaydi - buni \n bilan o'zingiz yozasiz.

gofmt - bahslar tugadi #

Go da kod formati haqida bahs yo'q

Ko'p tillarda jamoalar soatlab bahslashadi: qavs qayerda tursin, bo'shliqmi yoki tabulyatsiyami, qator uzunligi qancha bo'lsin.

Go da bu bahs butunlay yo'q, chunki tilga gofmt degan vosita kiritilgan. U kodni yagona rasmiy ko'rinishga keltiradi.

Terminal
gofmt -w main.go

Natijada dunyodagi hamma Go kodi bir xil ko'rinadi. Begona loyihani ochganingizda, format tanish bo'ladi.

Shuning uchun bu darslikdagi kod tabulyatsiya bilan tekislangan - gofmt shunday qiladi.

Go nimaga o'xshaydi #

Go ni ko'pincha "soddalashtirilgan C" deb atashadi, lekin bu to'liq to'g'ri emas. Undan olingan va ataylab olinmagan narsalar bor:

OlinganAtaylab olinmagan
C ning tezligi va soddaligiSinflar va vorislik
Statik turlarIstisnolar (try/catch)
Ko'rsatkichlarKo'rsatkich arifmetikasi
Avtomatik xotira tozalashKonstruktorlar
Go da sinf yo'q

Java yoki C# dan kelgan bo'lsangiz, birinchi kunlar g'alati tuyuladi: Go da class kalit so'zi umuman yo'q.

Uning o'rniga strukturalar (11-bo'lim) va interfeyslar (13-bo'lim) bor. Ular birgalikda xuddi shu ishni bajaradi, lekin boshqacha yo'l bilan - vorislik orqali emas, birlashtirish orqali.

Shoshilmang: 13-bo'limga yetganda bu yondashuv ko'p hollarda soddaroq ekani ayon bo'ladi.

Uchta e'lon uslubi #

Go
package main

import "fmt"

func main() {
    var birinchi string = "to'liq shakl"
    var ikkinchi = "tur o'zi aniqlanadi"
    uchinchi := "eng qisqa shakl"

    fmt.Println(birinchi)
    fmt.Println(ikkinchi)
    fmt.Println(uchinchi)
}
Natija
to'liq shakl
tur o'zi aniqlanadi
eng qisqa shakl

Amalda deyarli har doim uchinchi shakl - := - ishlatiladi. Uni keyingi bo'limda batafsil ko'ramiz.

Amaliy topshiriq
  1. Go ni o'z kompyuteringizga o'rnating (2-bo'limda ko'rsatiladi).
  2. Salom, dunyo! dasturini yozib ishga tushiring.
  3. package main ni package salom ga o'zgartiring va xatoni o'qing.
  4. import "fmt" qatorini o'chirib, xato matnini ko'ring.
  5. O'z ismingiz va shahringizni chiqaradigan dastur yozing.
  6. Println va Printf farqini bitta faylda ko'rsating.
  7. %d o'rniga %s yozib, natija nima bo'lishini ko'ring.
  8. Faylni ataylab noto'g'ri tekislab, gofmt -w ni ishlatib ko'ring.
  9. Go ning uch yaratuvchisidan biri haqida qisqacha o'qing.
  10. Docker yoki Kubernetes qaysi muammoni hal qilishini bilib oling.

Xulosa #

  • Go ni Google da Ken Tompson, Rob Payk va Robert Grizemer yaratgan; loyiha 2007-yilda boshlanib, 2009-yilda ochiq kodga chiqarilgan.
  • Sabab - C++ ning sekin kompilyatsiyasi va tillarning ortiqcha murakkabligi.
  • Tilning rasmiy nomi - Go; golang esa sayt manzilidan qolgan taxallus.
  • Har bir ishga tushadigan dastur package main va func main() dan iborat.
  • Println yangi qator qo'shadi, Printf esa shablon bo'yicha chiqaradi va \n ni o'zingiz yozasiz.
  • gofmt kod formatini yagona qiladi - bahsga o'rin qolmaydi.
  • Go da sinf yo'q; uning o'rniga struktura va interfeys ishlatiladi.
  • Go 1 va'dasi eski kodning ishlashda davom etishini kafolatlaydi.

Keyingi bo'limda Go ni o'rnatib, birinchi loyihani yaratamiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.