Shanraq.org Shanraq.org
Go орнату және VS Code баптау: жұмыс ортасы нөлден
IT

Go тілі: нөлден өз блогыңызға дейін 2-сабақ (барлығы 50)

Go орнату және VS Code баптау: жұмыс ортасы нөлден

Go курсының екінші сабағы. Кодтың бірінші жолына дейін не керек: Go 1.27, Go кеңейтімі бар VS Code, жоба қалтасы және go mod init. Қайсысы не үшін жауап беретінін талдаймыз: тіл, редактор, кеңейтім және терминал. Соңында алғашқы бағдарламаңыз терминалда әлемге сәлем айтады.

Не үшін керек

Бағдарламашы үш түрлі нәрсемен жұмыс істейді: тілмен, редактормен және терминалмен. Жаңадан бастаған адам оларды шатастырады — сосын бірдеңе істемей қалғанда кім кінәлі екенін түсінбейді.

Қазір жарты сағат — сонда ақау шыққанда оның қай құралға қатысты екенін ажыратасыз. Бұл — қызықсыз сабақ, бірақ жалғызы: әрі қарай тек код болады.

Бірден тұтас

Мінеки, неге келеміз. Екі файлы бар қалта:

go-oqu/
└── sabaq-01/
    ├── go.mod
    └── main.go

Және оны іске қосатын пәрмен:

go run .
Сәлем, әлем!

Сабақтағы қалғанының бәрі — осыған қалай келу және мұндағы не екені.

Талдау

Үш құрал және қайсысы не үшін жауап береді

Go — тілдің өзі және пәрмендер жиыны. Ол сіз жазған мәтінді жұмыс істейтін бағдарламаға айналдырады. Онсыз ештеңе іске қосылмайды.

Елестетіп көріңіз. Бригадасы бар прораб. Сіз сызбаны әкелесіз, ол сол бойынша үй тұрғызады. Сызбаның өзінде тұруға болмайды.

Редактор — мәтін жазатын терезе. Өздігінен ол ештеңе іске қоспайды және көмектеспесе Go туралы ештеңе білмейді. Біз VS Code аламыз: ол тегін әрі Windows-та, macOS-та және Linux-та бірдей жұмыс істейді.

Елестетіп көріңіз. Шамы, сызғышы және жақсы қағазы бар үстел. Қараңғыда тізеге қойып та сызуға болады — тек баяу әрі қатемен.

Терминал — бағдарламаға мәтінмен пәрмен беретін терезе. Ол VS Code ішіне кіріктірілген, бөлек ашудың қажеті жоқ.

Елестетіп көріңіз. Өтініш қабылдайтын терезе. Не істеу керегін қағазға жазып, ішке ұсынасыз.

Осы бөліністі есте сақтаңыз, ол сағаттарды үнемдейді:

  • бағдарлама жиналмай, Go кодыңызға ұрсып жатса — кінә кодта;
  • редакторда қызыл сызық тұр, бірақ go run жұмыс істеп тұрса — бұл кеңейтімнің кеңесі, қате емес;
  • терминал «пәрмен табылмады» десе — мәселе орнатуда, бағдарламада емес.

Go орнатамыз

go.dev/dl ашыңыз. Жүйеңізге арналған орнатушыны жүктеңіз: бет ұсынатын соңғы тұрақты нұсқаны алыңыз — сабақ жазылған кезде бұл go1.27.1. Іске қосып, әдеттегі «Әрі қарай» батырмаларынан өтіңіз.

Мұрағатты қолмен кез келген жерге тарқатпаңыз. Орнатушы Go-ны жүйе табатын жерге қояды және оны PATH-қа жазады.

PATH — терминал пәрмендерді іздейтін қалталар тізімі. Сіз go тергенде, терминал бүкіл дискіні қарамайды, тек осы тізімге қарайды. Сондықтан PATH-тан тыс орнатылған бағдарлама дискіде бар, бірақ терминал үшін жоқ.

Елестетіп көріңіз. Курьердегі мекенжайлар тізімі. Дүкен көрші көшеде тұруы мүмкін, бірақ тізімде жоқ болса, курьер қайтып келіп «ондай жоқ» дейді. Ол қаланы аралап шықпайды, тізімді оқиды.

Терминалды жауып, қайта ашыңыз — ол PATH-ты іске қосылғанда оқиды. Тексеріңіз:

go version

go version go1.27.1 darwin/arm64 тәрізді жол келуі керек. Соңғы екі сөз — жүйеңіз бен процессор түрі, сізде өзгеше болады.

Редактор орнатамыз

code.visualstudio.com ашыңыз, жүктеңіз, орнатыңыз.

Кеңейтім — редакторға жаңа нәрсе үйрететін қосымша. Алғаш орнатылған күйінде VS Code Go туралы ештеңе білмейді.

Елестетіп көріңіз. Бұрғыға салынатын ұштық. Бұрғы біреу, ал ағашты да, бетонды да теседі — ішіне нені салғаныңызға қарай.

Бір міндетті кеңейтім керек. Ctrl+Shift+X (Mac-та ⇧⌘X) басып, іздеуге Go теріңіз де, авторы Go Team at Google болатын кеңейтімді орнатыңыз. Ол ресми.

.go кеңейтімді файлды бірінші рет ашқанда, редактор оң жақ төменнен Install All ұсынады. Келісіңіз. Ол бірнеше көмекші бағдарлама әкеледі; негізгісі — gopls: ол теру кезінде кеңес береді, әлі жазып жатқаныңызда қатені көрсетеді және сақтағанда кодты ортақ түрге келтіреді.

Елестетіп көріңіз. Иығыңыздан қарап оқитын корректор. Сіз сөйлемді әлі жазып жатырсыз, ал ол қаламмен қатені сызып та қойды.

Қаласаңыз Error Lens орнатыңыз — ол қате мәтінін сызықтың астына жасырмай, жолдың өзінде жазады. Жаңадан бастағанға бұл айтарлықтай көмектеседі.

Шықпай қалса. Install All батырмасы шықпаса — Ctrl+Shift+P (Mac-та ⌘⇧P) басып, Go: Install/Update Tools теріңіз, бәрін белгілеп, растаңыз. Орнатушы өтті, ал терминал command not found: go десе — терминал мен редакторды түгел жауып, қайта ашыңыз: PATH іске қосылғанда оқылады. Ол да көмектеспесе, компьютерді қайта қосыңыз: Windows-та көбіне емі осы. Мектеп не жұмыс компьютерінде бағдарлама орнатуға тыйым салынған болса — тілді сервер сабағына дейін go.dev/play арқылы браузерден өтуге болады, бірақ серверден бастап өз машинаңыз керек, мұны екі аптадан кейін емес, дәл қазір анықтаған дұрыс.

Жұмыс қалтасы

Бұрын Go кодты бір ерекше жерде ұстауды талап ететін. Ол ереже (GOPATH) баяғыда алынып тасталды: жоба енді жай ғана қалта. Бірақ өз орныңыз Go-ға емес, сізге керек.

Бүкіл курсқа бір қалта, оның ішінде әр сабаққа бір қалта жасаңыз:

  • macOS пен Linux: ~/go-oqu/sabaq-01
  • Windows: %USERPROFILE%\go-oqu\sabaq-01 — яғни өз пайдаланушы қалтаңыздың ішінде. C:\ дискінің түбіріне кәдімгі тіркелгі әрқашан жаза алмайды.

Қалтаны тінтуірмен де, пәрменмен де жасауға болады. Windows-та VS Code терминалы әдепкіде PowerShell ашады, ал онда пайдаланушы қалтасы %USERPROFILE% емес, $HOME деп аталады:

cd $HOME
mkdir go-oqu
cd go-oqu

macOS пен Linux-та дәл солай:

cd ~
mkdir go-oqu
cd go-oqu

Жұмыс үстелі де, Жүктелімдер де емес: онда файлдар бөгденің арасында жоғалады, ал Жүктелімдерді кейбір жүйе өзі тазалайды. Қалталарды бос орынсыз латынмен атаңыз — бос орны мен кириллицасы бар жол құралдарды анда-санда бұзады, ал екінші сабақта онымен айналысудың қажеті жоқ.

Бұл қалтаны редакторда ашыңыз: File → Open Folder. Жеке файлды емес, дәл қалтаны ашу маңызды, әйтпесе кеңестер жұмыс істемейді.

go mod init: жобаны қалай атау

VS Code ішіндегі терминалды ашыңыз — Terminal → New Terminal мәзірі немесе Ctrl + ` (бірліктің сол жағындағы кері дәйекше пернесі). Сабақ қалтасында орындаңыз:

go mod init sabaq01

Қасында екі жолдан тұратын go.mod файлы пайда болады — жоба аты мен Go нұсқасы. Бұл оның төлқұжаты: сол арқылы Go жобаның қайдан басталатынын және қалай аталатынын түсінеді.

Елестетіп көріңіз. Үйдегі мекенжай тақтайшасы. Онсыз пошташы қабырғаны көреді, бірақ бір үй қайда бітіп, екіншісі қайдан басталатынын білмейді.

Шынын айтқанда, алты жолдық бағдарлама онсыз да іске қосылады. Бірақ go.mod болмаса, редактор шектеулі режимде жұмыс істейді: жобаның шекарасы белгісіз, кеңестердің бір бөлігі жоғалады. Модульдерді пакеттерге жеткенде толық талдаймыз.

Неге оқу жеткіліксіз

Уақытыңызды жоғалтпас үшін бірден айтайық.

Оқу шеберлік бермейді. Ол топырақ дайындайды: сабақтан кейін бәрі түсінікті сияқты көрінеді — сол сезім алдайды.

Себебі мынада. Оқығанда сіз танисыз: экрандағы жол таныс болып көрінеді, ал таныстықты ми оңайлықпен түсінік деп қабылдайды. Бірақ жазылғанды тану мен өзің жазу — екі бөлек әрекет, олар бөлек жаттығады. Оқығанда істейтін жады қысқа: ол дәл қазір қарап отырғаныңызды ұстайды да, бірнеше күннен кейін жіберіп алады. Сондықтан оқығаныңыз ұшып кетеді — қолыңызбен ештеңе істемедіңіз.

Теру басқаша жұмыс істейді. Тергенде сіз кодты беттен танымай, басыңыздан шығарасыз, ал қайталау басқа жадыға — бұлшықет жады дейтінге — жиналады. Ол баяуырақ жиналады, есесіне жылдап сақталады және назар талап етпейді: саусақ теңдіктің алдындағы қос нүктені өзі қояды, фигуралық жақшаны өзі жабады, func, ат және жақшаның ретін өзі біледі, — ал бас сол уақытта синтаксиспен емес, тапсырмамен айналысады. Бұл музыкант пен спортшыдағы дәл сол жады, жұмысы да сондай.

Бұдан оқудың қажеті жоқ деген қорытынды шықпайды. Екі жартысы да керек, бірі екіншісін алмастырмайды: оқу мәлімет береді — тілім деген не, append неге жаңасын қайтарады, — ал теру мәліметті шеберлікке айналдырады. Біріншісіз болжайсыз, екіншісіз бөтен кодты тани білумен ғана қаласыз.

Боксты кітаптан үйренген чемпион болмайды. Дауыс туралы оқып, дауысын меңгерген әнші жоқ, қадамның сипаттамасы бойынша қадам қойған биші жоқ. Бағдарламалаудың айырмашылығы жоқ: код туралы оқу мен код жазу — екі бөлек іс, екіншісін біріншісімен алмастыруға болмайды.

Осыдан бүкіл курсқа арналған ереже:

  1. Тапсырманы VS Code-та шешіңіз. Редактор сіз әлі теріп жатқанда қатені сызып көрсетеді, аттарды ұсынады және сақтағанда шегіністерді ретке келтіреді. Ол сізді жол-жөнекей үйретеді — сайттағы өріс олай істей алмайды.
  2. Іске қосып, жұмыс істейтініне көз жеткізіңіз. go run . және нәтижеге өз көзіңізбен қараңыз.
  3. Содан кейін ғана — сайттағы тексеру. Ол қатені табу үшін емес, тапсырманың дұрыс түсінілгенін растау үшін керек. Бір сабаққа үш тексеру, оларды редактор тегін көрсететін нәрсеге жұмсаудың қажеті жоқ.

Алғашқы бағдарлама

Сол қалтада main.go файлын жасаңыз:

package main

import "fmt"

func main() {
	fmt.Println("Сәлем, әлем!")
}

«Сәлем, әлем!» — жарты ғасыр бойы кез келген тілдегі алғашқы бағдарлама әлемге сәлем айтады, ағылшынша ол Hello, World деп аталады. Дәстүрді бұзбай, өз тілімізде айтып тұрмыз.

Осы алты жолда не жазылған

Әр сөзді талдап шығайық. Жаттаудың қажеті жоқ: бұл жолдар Go-дағы кез келген бағдарламаның басында тұрады, бірнеше рет теріп-ақ өздігіңізден есте сақтайсыз.

package main — бұл қандай файл екенін жариялау. Пакет — аты бар, код тұратын қалта. main деген ат ерекше: ол «іске қосуға болатын бағдарлама» дегенді білдіреді, «бөгде бағдарламаларға арналған бөлшектер жиыны» емес.

Елестетіп көріңіз. Есіктегі тақтайша. main — «КІРУ», көшеден осында кіреді. Аты басқа пакет — қызметтік бөлме: есігі бар, бірақ ол келушілерге арналмаған.

import "fmt" — жұмысқа не алып кіру. fmt (ағылшынның format сөзінен) мәтін баса алады. import жазбасаңыз — құрал жоқ, бағдарлама жиналмайды.

Елестетіп көріңіз. Құрал қоймасы мен өз жұмыс үстеліңіз. import — қоймадан алып, алдыңызға қойған нәрсе. Қалғанының бәрі сөреде жатыр, қолыңыз оған жетпейді.

func — функцияның басы. Функция — аты бар, жазып қойылған әрекеттер реті. Оны шақырмайынша ештеңе болмайды.

Елестетіп көріңіз. Дәптердегі рецепт. Ол жатыр және күтеді. Сол бойынша ас пісіре бастамайынша, ас үй бос.

main — осы функцияның аты, ол да ерекше: бағдарлама іске қосылғанда Go дәл осында кіреді. Мұндай функция бағдарламада дәл біреу.

Елестетіп көріңіз. Үйдің басты есігі. Бөлме қанша болса да, кіру әрқашан сол арқылы.

() — аттан кейінгі дөңгелек жақша. Ішіне функция жұмыс істейтін нәрсе беріледі. main ішінде бос: оған ештеңе берілмейді, ол жай ғана басталады.

{ және } — фигуралық жақшалар. Екеуінің арасындағының бәрі — функцияның денесі, оның не істейтіні.

Елестетіп көріңіз. Бөлменің қабырғалары. { — кірдіңіз, } — шықтыңыз. Жақшалар әрқашан жұп: екінші қабырғасы жоқ қабырға болмайды.

fmt.Println("Сәлем, әлем!") — жолды терминалға басады. Нүкте «ішінен» деп оқылады: «fmt ішінен Println ал». Атаудың өзі ағылшынның print line дегенінен: жолды басып, меңзерді жаңа жолға көшіру.

Елестетіп көріңіз. Құрал жәшігі және ішіндегі құрал. fmt — жәшік, Println — балға, нүкте — оны алатын қол.

Алты жол, сегіз ұғым. Курста әрі қарай олар түсіндірілмейді — сіз оларды білесіз деп саналады.

Іске қосыңыз:

go run .

Нүкте «осы қалтадағының бәрі» дегенді білдіреді. go run main.go деп те жазуға болар еді, бірақ нүктемен файлдар көбейгенде ештеңе өзгертудің қажеті болмайды.

Сабақ картасы

Сабақ картасы: редактор, терминал және Go — қайсысы не үшін жауап береді

Өз сөзіңізбен айтыңыз

Қарамай, дауыстап немесе қағазға жазып жауап беріңіз. Жауаптары — сабақтың соңында.

  1. VS Code жойылса, бағдарламаңыз іске қосылмай қала ма?
  2. Терминал command not found: go деп жауап берді. Нақты не болды және себебін қайдан іздейміз?
  3. Алты жолдық бағдарлама онсыз да жұмыс істесе, go.mod не үшін керек?

Тапсырма

Міндетті. Сабақты соңына дейін өтіңіз: Go орнатылды, қалта жасалды, go run . сәлемдесуді жазады. Содан соң «әлем» сөзін өз атыңызға ауыстырып, тағы бір рет іске қосыңыз.

Қалауыңызша.

  • go.mod ашып, екі жолын да оқыңыз. Онда не жазылған?
  • Қасына sabaq-02 қалтасын жасап, бәрін қарамай, жаттан қайталаңыз.
  • main.go ішінен import "fmt" жолын алып тастап, іске қосыңыз. Go не айтатынын оқып, кері қайтарыңыз. Қатені әдейі бір рет көру пайдалы.

Блогта қайда тұрады

Осы қалтада сіздің блогыңыз тұрады. Келесі сабақтардың бәрі бірдей басталады: жаңа қалта, go mod init, main.go — пакеттер туралы сабақта бәрін бір жобаға жинағанша.

Жауаптар

Жауаптарды көрсету
  1. Жоқ. Редактор — мәтінге арналған терезе; бағдарламаны Go іске қосады. «Блокнотта» да жазуға болады, тек кеңессіз әрі ыңғайсыз.
  2. Терминал PATH-тағы қалталарды аралап, go пәрменін таппады. Не Go орнатылмаған, не орнатушы жолды терминал ашылып қойған соң жазған. Алдымен терминалды жауып, қайта ашыңыз; Windows-та кейде жүйеден шығып, қайта кіру керек.
  3. Алты жолдық бағдарлама шынымен іске қосылады. go.mod бөгде пакеттер немесе бірнеше файл пайда болғанда керек — әрі ол редакторға дәл қазір керек: онсыз gopls жобаның шекарасын көрмейді де, үндемейді.

Дереккөздер

Мәтінде қате не теру қатесі кездессе, бізге айтыңыз

Тапсырманы тексеру

Алдымен VS Code-та шешіп, іске қосыңыз — редактор қатені сол жерде көрсетеді. Дайын шешімді осында қойыңыз. Тексеретін — модель: ол қатені атап көрсетеді, бірақ дайын жауапты бермейді.

Тексеру үшін кіру керек. Кіру

Пікірлер (0)

Әзірге пікір жоқ. Бірінші болыңыз.