← Курсқа оралу

Тегін сынақ сабағы: Golang Developer

Осы курстың бірнеше нақты сабағын өтіңіз — тіркелудің қажеті жоқ.

01

Сабақ 1: Пакеттер, түсініктемелер, айнымалылар және операторлар

Пакеттер. Түсініктемелер.

Go тіліндегі кез келген код пакеттің ішінде сақталады. Пакет — бұл .go файлдары орналасқан қалта.

Go бағдарламасын жасаудың алғашқы қарапайым мысалын қарастырайық:

main.go
package main

import "fmt"

func main() {
    fmt.Println("Salem Bitlab!")
}
Output:Salem Bitlab!
GOLANG
Нәтиже

Осы бағдарламаны орындау үшін біз main және fmt пакеттерін қолдандық.

package main — бұл негізгі пакет. Онда міндетті түрде бағдарламаның кіру нүктесі болып табылатын func main() функциясы болуы керек. Go қосымшасын іске қосқанда, бірінші шақырылатын функция дәл осы.

package fmt — деректерді консольге шығару үшін қолданылатын стандартты пакет. Шығарудан басқа, ол пішімделген енгізу мен шығаруды да қолдайды.

Бағдарлама үлкейген сайын кодты оқып, түсіну қиындай түседі. Бағдарлама логикасын түсінуді жеңілдету үшін түсініктемелер қолданылады.

Түсініктемелер кодты түсіндіру және оны логикалық бөліктерге бөлу үшін қажет. Олар компиляцияға қатыспайды және бағдарламаның орындалуына ешбір әсер етпейді.

Түсініктеме түрлері

02

Сабақ 2: Шартты құрылымдар және логикалық операторлар

Go-да шарттар деген не?

Нақты бағдарламаларда код әрдайым жоғарыдан төменге қарай бірдей орындала бермейді. Кейде бағдарлама шешім қабылдауы керек: бір код блогын немесе басқасын орындау.

Мысалы:

  • егер пайдаланушының жасы 18-ден үлкен немесе тең болса — қолжетімділік беру;
  • егер пароль дұрыс болса — жүйеге кіру;
  • егер баланс жеткілікті болса — төлемді орындау;
  • егер баға жоғары болса — сәттілік туралы хабарлама шығару.

Осындай жағдайлар үшін Go-да шартты құрылымдар қолданылады. Олар бағдарламаға қандай кодты орындау керектігін таңдауға мүмкіндік береді.

Шарт — бұл нәтижесі әрқашан true немесе false болатын өрнек.

Шарт қалай жұмыс істейді?

Шартты құрылым өрнекті тексереді. Егер өрнектің нәтижесі true болса, бір код блогы орындалады. Егер нәтиже false болса, бұл блок өткізіп жіберіледі немесе басқа блок орындалады.

if құрылымы

Ең қарапайым шартты құрылым — if. Ол тек шарт ақиқат болған жағдайда ғана кодты орындайды.

main.go
package main

import "fmt"

func main() {
    age := 20

    if age >= 18 {
        fmt.Println("Доступ разрешён")
    }
}
Output:Доступ разрешён
GOLANG
Нәтиже

Мұнда бағдарлама age >= 18 шартын тексереді. age айнымалысының мәні 20-ға тең, сондықтан шарт ақиқат. Демек, if блогының ішіндегі код орындалады.

Маңызды: Go-да if ішіндегі шарт дөңгелек жақшаға алынбайды. Бірақ бұйра жақшалар { } міндетті түрде болуы керек.

if ... else құрылымы

Шарт ақиқат болғанда бір код, ал жалған болғанда басқа код орындалуы керек болса, if ... else құрылымы қолданылады.

main.go
package main

import "fmt"

func main() {
    age := 15

    if age >= 18 {
        fmt.Println("Доступ разрешён")
    } else {
        fmt.Println("Доступ запрещён")
    }
}
Output:Доступ запрещён
GOLANG
Нәтиже

age мәні 15-ке тең. age >= 18 шарты false қайтарады. Сондықтан if блогы орындалмайды, оның орнына else блогы орындалады.

03

Сабақ 3: Циклдар және for операторы

Цикл дегеніміз не?

Цикл — бұл белгілі бір әрекеттерді бірнеше рет орындауға мүмкіндік беретін нұсқаулар тізбегі.

Бағдарламалауда бір әрекетті бірнеше рет қайталау керек болатын жағдайлар өте жиі кездеседі. Мысалы:

  • 1-ден 10-ға дейінгі сандарды шығару;
  • сандардың қосындысын есептеу;
  • консольден бірнеше мән оқу;
  • студенттер тізімін өңдеу;
  • көбейту кестесін басып шығару.

Циклдарсыз бірдей кодты қолмен көп рет жазуға тура келер еді. Циклдар кодты қысқа, түсінікті және ыңғайлы етеді.

Go тілінде тек бір ғана цикл бар — for, бірақ ол әртүрлі түрде болуы мүмкін.

Цикл қалай жұмыс істейді?

  • алдымен бастапқы мән беріледі;
  • содан кейін шарт тексеріледі;
  • шарт ақиқат болса, цикл денесі орындалады;
  • осыдан кейін мән өзгереді;
  • содан кейін шарт қайта тексеріледі.

Классикалық for

Классикалық for циклі цикл шамамен қанша рет орындалатынын алдын ала білгенде қолданылады.

Мысалы, 0-ден 4-ке дейінгі сандарды шығару керек болса:

main.go
package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }
}
Output:0 1 2 3 4
GOLANG
Нәтиже

Цикл құрылымы үш бөліктен тұрады:

  • i := 0 — инициализация (бастапқы мән)
  • i < 5 — шарт (ақиқат болғанша цикл жұмыс істейді)
  • i++ — қадам (әр итерациядан кейін айнымалыны өзгерту)

Осылайша цикл 5 рет орындалды — i саны 5-ке тең болғанша.

Мысал: 1-ден 10-ға дейінгі сандарды шығару

Белгілі бір диапазондағы сандарды шығару өте жиі кездесетін тапсырма. Ол үшін қарапайым for циклін қолдануға болады.

main.go
package main

import "fmt"

func main() {
    for i := 1; i <= 10; i++ {
        fmt.Println(i)
    }
}
Output:1 2 3 4 5 6 7 8 9 10
GOLANG
Нәтиже

Бұл мысалда i айнымалысы 1-ден басталады. Цикл i <= 10 болғанша жұмыс істейді. Әр итерациядан кейін i мәні 1-ге артады.

Мысал: сандардың қосындысы

Циклдар нәтижені жинақтау үшін жиі қолданылады. Мысалы, 1-ден 5-ке дейінгі сандардың қосындысын есептеуге болады.

main.go
package main

import "fmt"

func main() {
    sum := 0

    for i := 1; i <= 5; i++ {
        sum = sum + i
    }

    fmt.Println(sum)
}
Output:15
GOLANG
Нәтиже

Мұнда sum айнымалысы жалпы нәтижені сақтайды. Әр итерацияда біз оған i-дің ағымдағы мәнін қосамыз.

sum қалай өзгереді:

  • i = 1, sum = 0 + 1 = 1
  • i = 2, sum = 1 + 2 = 3
  • i = 3, sum = 3 + 3 = 6
  • i = 4, sum = 6 + 4 = 10
  • i = 5, sum = 10 + 5 = 15
04

Сабақ 4: Тілімдер

Тілім дегеніміз не?

Тілім (slice) — бір типтегі элементтердің ретті жиынтығы. Массивтерден айырмашылығы, тілімдердің ұзындығы динамикалық: оларға жаңа элементтер қосуға және барларын жоюға болады.

Тілімдер массивтерге өте ұқсас, бірақ нақты әзірлемеде әлдеқайда ыңғайлы. Массивтің өлшемі тұрақты болса, тілім қажеттілікке қарай өсе алады.

Сондықтан Go тілінде әдетте кәдімгі массивтермен емес, тілімдермен жұмыс істейді.

Тілімдер қазақ тойы сияқты: 200 адамға іс-шара жоспарлауға болады, ал соңында қанша қонақ келетіні белгісіз. Бәлкім 150? 250? Немесе тұтас 300? Тілімдер той ұйымдастырушылары сияқты бір қасиетке ие — икемділік.

Мейрам "Уақтылық" Тойбастаров — "ешқашан" кешікпейтін және тілімдерден хабардар кісі

Тілім мен массивтің басты айырмашылығы — тілімнің ұзындығы программа жұмыс істеп тұрған кезде өзгере алады.

Массив vs тілім

Көрнекі түрде массив пен тілім бір-біріне өте ұқсас, бірақ олардың арасында маңызды айырмашылық бар.

Массив

Өлшемі тұрақты. Егер массив 5 элементке жасалса, ол әрқашан дәл 5 элементтен тұрады.

Тілім

Өлшемі динамикалық. Тілімге элементтер қосып, жаңа, үлкейтілген тілім алуға болады.

Go тілінде тілім массив сияқты жазылады, тек шаршы жақшаның ішінде өлшемі көрсетілмейді.

Тілім жасау

Тілімдер массивтер сияқты жасалады, тек жасау кезінде ұзындығы көрсетілмейді.

Main.go
package main

import "fmt"

func main() {
    boxers := []string{"Muhammad Ali", "Mike Tyson", "George Foreman", "Joe Frazier"}
    for _, value := range boxers {
        fmt.Println(value)
    }
}
Output:Muhammad Ali Mike Tyson George Foreman Joe Frazier
GOLANG
Нәтиже

Назар аударыңыз: [] ішінде біз ұзындықты көрсеткен жоқпыз — дәл осы себепті бұл slice.

Егер [4]string деп жазсақ, бұл массив болады. Ал []string деп жазсақ, бұл тілім болады.

Әртүрлі типтегі тілім

Тілім әртүрлі деректер типіндегі элементтерді сақтай алады, бірақ бір тілімнің ішінде барлық элементтер бір типті болуы керек.

Сандар тілімі:

numbers := []int{10, 20, 30, 40}

Жолдар тілімі:

cities := []string{"Almaty", "Astana", "Paris"}

Логикалық мәндер тілімі:

answers := []bool{true, false, true}