Π Π°Π·Π½ΠΎΠ΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° go: Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π’Π°ΡˆΠ° пСрвая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° β€” Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go

Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ пСрвая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ начинаСтся ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ любого языка
программирования, называСтся Β«Hello WorldΒ» β€” эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° просто Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π²
консоль строку Hello World. Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм Π΅Ρ‘ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Go.

Π‘Π½Π°Ρ‡Π°Π»Π° создадим Π½ΠΎΠ²ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.
Установщик, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π³Π»Π°Π²Π΅, создал Π² вашСй домашнСй
Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Go. Π’Π΅ΠΏΠ΅Ρ€ΡŒ создайтС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ
~/Go/src/golang-book/chapter2 (Π³Π΄Π΅ ~ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Π°ΡˆΡƒ домашнюю Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ).
Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΈΠ· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:

mkdir Go/src/golang-book
mkdir Go/src/golang-book/chapter2

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

package main

import "fmt"

// this is a comment

func main() {
    fmt.Println("Hello World")
}

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ содСрТимоС Ρ„Π°ΠΉΠ»Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ здСсь ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΈ сохранитС
Π΅Π³ΠΎ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ main. go Π² созданной Ρ€Π°Π½Π΅Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ
Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅:

cd Go/src/golang-book/chapter2
go run main.go

Π’ ΠΎΠΊΠ½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ сообщСниС Hello World. Команда go run
Π±Π΅Ρ€Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ), ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… Π² исполняСмыС
Ρ„Π°ΠΉΠ»Ρ‹, сохраняСт Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ запускаСт. Если Π²Ρ‹ Π½Π΅ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ
Hello World, Ρ‚ΠΎ, вСроятно, Π³Π΄Π΅-Ρ‚ΠΎ Π±Ρ‹Π»Π° Π΄ΠΎΠΏΡƒΡ‰Π΅Π½Π° ошибка, ΠΈ компилятор подскаТСт
Π²Π°ΠΌ, Π³Π΄Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ. Как ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ компиляторов, компилятор Go ΠΊΡ€Π°ΠΉΠ½Π΅
ΠΏΠ΅Π΄Π°Π½Ρ‚ΠΈΡ‡Π΅Π½ ΠΈ Π½Π΅ ΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ошибок.

Как Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Go

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Go Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ
свСрху Π²Π½ΠΈΠ·, слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ (ΠΊΠ°ΠΊ ΠΊΠ½ΠΈΠ³Π°). ΠŸΠ΅Ρ€Π²Π°Ρ строка гласит:

Π­Ρ‚ΠΎ называСтся Β«ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Β». Π›ΡŽΠ±Π°Ρ Go ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с опрСдСлСния
ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ β€” это ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Go ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ использованию
ΠΊΠΎΠ΄Π°. Π•ΡΡ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Go: исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ раздСляСмыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.
Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΈΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ прямо ΠΈΠ·
Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° (Π² Windows ΠΈΡ… имя заканчиваСтся Π½Π° .exe). Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ
коллСкциями ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π”Π΅Ρ‚Π°Π»ΡŒΠ½Π΅Π΅ ΠΌΡ‹
Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅, Π° ΠΏΠΎΠΊΠ° просто Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ эту
строку Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅.

Π”Π°Π»Π΅Π΅ слСдуСт пустая строка. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ прСдставляСт Π½ΠΎΠ²Ρ‹Π΅ строки ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ
символом (ΠΈΠ»ΠΈ нСсколькими символами). Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Π½ΠΎΠ²ΠΎΠΉ строки, ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ символы
табуляции Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ раздСлитСлями. Go Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π° Π½ΠΈΡ… внимания, Π½ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ
ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ сСбС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ эту строку ΠΈ
ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Π΅Π΄Π΅Ρ‚ сСбя Π² точности ΠΊΠ°ΠΊ Ρ€Π°Π½ΡŒΡˆΠ΅).

Π”Π°Π»ΡŒΡˆΠ΅ слСдуСт это:

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово import позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сторонниС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ для использования
ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΠ°ΠΊΠ΅Ρ‚ fmt (сокращСниС ΠΎΡ‚ format) Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚
Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Учитывая Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ
ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…, ΠΊΠ°ΠΊ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части Ρ„Π°ΠΉΠ»ΠΎΠ²
ΠΏΠ°ΠΊΠ΅Ρ‚Π° fmt?

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ fmt взят Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. ИспользованиС Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ…
ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ называСтся «строковым Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ являСтся Π²ΠΈΠ΄ΠΎΠΌ
«выраТСния». Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π² Go ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π½Π°Π±ΠΎΡ€ символов (Π±ΡƒΠΊΠ², чисСл, …)
ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΠΌΡ‹ рассмотрим Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅, Π° сСйчас
Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π·Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ символом " Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½
ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ. Всё, Ρ‡Ρ‚ΠΎ находится ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ строкой
(символ " сам ΠΏΠΎ сСбС Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ строки).

Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π°ΡΡΡ с //, являСтся ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ
компилятором Go ΠΈ слуТат пояснСниями ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для вас (ΠΈΠ»ΠΈ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΌ
Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄). Go ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²: // ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²
ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ вСсь тСкст Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки ΠΈ /* */, Π³Π΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ являСтся всё,
Ρ‡Ρ‚ΠΎ содСрТится ΠΌΠ΅ΠΆΠ΄Ρƒ символами * (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ пСрСносы строк).

Π”Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

func main() {
    fmt.Println("Hello World")
}

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Go. Они ΠΈΠΌΠ΅ΡŽΡ‚ Π²Ρ…ΠΎΠ΄Ρ‹, Π²Ρ‹Ρ…ΠΎΠ΄Ρ‹ ΠΈ ряд
дСйствий, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, располоТСнных Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ порядкС. Π›ΡŽΠ±Π°Ρ
функция начинаСтся с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова func Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚: имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π²
нашСм случаС main), список ΠΈΠ· нуля ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ (Ссли
Π΅ΡΡ‚ΡŒ) ΠΈ само Β«Ρ‚Π΅Π»ΠΎΒ», Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки. Наша функция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚
Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈ содСрТит всСго ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Имя
main являСтся особСнным, эта функция Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ сама ΠΏΡ€ΠΈ запускС
ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ являСтся эта строка:

fmt.Println("Hello World")

Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ содСрТит Ρ‚Ρ€ΠΈ части: доступ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° fmt ΠΏΠΎΠ΄
Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Println (Print line), Π·Π°Ρ‚Π΅ΠΌ созданиС Π½ΠΎΠ²ΠΎΠΉ строки, содСрТащСй
Hello World, ΠΈ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с этой строкой Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ
СдинствСнного Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ количСством Π½ΠΎΠ²Ρ‹Ρ…
Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ². Иногда ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π½Π΅ спСша ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ вслух. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ,
ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ написали, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ fmt ΠΈ
содСрТит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ main. Π­Ρ‚Π° функция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Println ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ fmt
ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Ρ‘, пСрСдавая ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” строку Hello World.

Ѐункция Println выполняСт ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ
Π½Π΅ΠΉ большС, Π½Π°Π±Ρ€Π°Π² Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΡ‡Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это:

Println formats using the default formats for its operands and writes to
standard output. Spaces are always added between operands and a newline is
appended. It returns the number of bytes written and any write error
encountered. 

Go β€” ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык, Π½ΠΎ эта докумСнтация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½Π°
для понимания, Ссли Π²Ρ‹ Π΄ΠΎ этого Π½Π΅ Π±Ρ‹Π»ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками программирования. Π’Π΅ΠΌ
Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠΎΠΌΠ°Π½Π΄Π° godoc ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° для Π½Π°Ρ‡Π°Π»Π° поиска ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π°
Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ вопросы.

БСйчас докумСнтация Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ² Println ΠΏΠΎΡˆΠ»Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΅ΠΉ
Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° стандартный Π²Ρ‹Π²ΠΎΠ΄ β€” Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Π²Ρ‹ сСйчас Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² Π½Ρ‘ΠΌ. Π­Ρ‚Π° функция
являСтся ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Hello World отобраТаСтся Π½Π° экранС.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Go Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈ прСдставляСт Π²Π΅Ρ‰ΠΈ Π²Ρ€ΠΎΠ΄Π΅
Hello World с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΈΠΏΠΎΠ².

Π—Π°Π΄Π°Ρ‡ΠΈ

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ?

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ? НазовитС Π΄Π²Π° способа записи ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

  • Наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Ρ‡ΠΈΠ½Π°Π»Π°ΡΡŒ с package main. Π‘ Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅
    fmt?

  • ΠœΡ‹ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Println ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° fmt. Если Π±Ρ‹ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ
    ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Exit ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° os, Ρ‡Ρ‚ΠΎ Π±Ρ‹ для этого ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ?

  • Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вмСсто Hello World ΠΎΠ½Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»Π°
    Hello, my name is вмСстС с вашСм ΠΈΠΌΠ΅Π½Π΅ΠΌ.

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ β€” Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” это искусство, рСмСсло ΠΈ Π½Π°ΡƒΠΊΠ° ΠΎ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ,
ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π­Ρ‚Π° ΠΊΠ½ΠΈΠ³Π° Π½Π°ΡƒΡ‡ΠΈΡ‚ вас ΠΏΠΈΡΠ°Ρ‚ΡŒ
ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с использованиСм языка программирования, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π²
ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google, ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Go.

Go β€” язык ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния с ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌΠΈ возмоТностями ΠΈ понятным синтаксисом.
Благодаря ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΠΈ, Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ стандартной
Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΈ ориСнтированности Π½Π° ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ самой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Go
являСтся ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ языком для ΠΏΠ΅Ρ€Π²Ρ‹Ρ… шагов Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Go (ΠΈ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков
программирования) довольно прост:

  • сбор Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ,
  • поиск Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ,
  • написаниС ΠΊΠΎΠ΄Π°, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ,
  • компиляция ΠΊΠΎΠ΄Π° Π² исполняСмый Ρ„Π°ΠΉΠ»,
  • запуск ΠΈ тСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ этот ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·), ΠΈ шаги, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ,
ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ напишСм Π½Π°ΡˆΡƒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Go, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ
нСсколько основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ².

Π€Π°ΠΉΠ»Ρ‹ ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ

Π€Π°ΠΉΠ» прСдставляСт собой Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, хранящийся Π² Π±Π»ΠΎΠΊΠ΅ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.
Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Windows ΠΈΠ»ΠΈ Mac OS X) состоят ΠΈΠ·
ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ², содСрТащих большой объСм Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ β€” начиная ΠΎΡ‚
тСкстовых Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ заканчивая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

Π€Π°ΠΉΠ»Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ хранятся Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅: всС ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ имя,
ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ (измСряСмый Π² Π±Π°ΠΉΡ‚Π°Ρ…) ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚ΠΈΠΏ
Ρ„Π°ΠΉΠ»Π° опрСдСляСтся ΠΏΠΎ Π΅Π³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡŽ β€” части ΠΈΠΌΠ΅Π½ΠΈ, которая стоит послС
послСднСй .. НапримСр, Ρ„Π°ΠΉΠ», Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ hello.txt, ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ txt,
Π° Π·Π½Π°Ρ‡ΠΈΡ‚ содСрТит Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Папки (Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ дирСкториями) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для группирования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ…
Ρ„Π°ΠΉΠ»ΠΎΠ².

Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ взаимодСйствия с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ сСйчас осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса (GUI). ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ, ΠΌΡ‹ΡˆΡŒ,
сСнсорныС экраны для взаимодСйствия с Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ
ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΌΠΈ элСмСнтами.

Но Ρ‚Π°ΠΊ Π±Ρ‹Π»ΠΎ Π½Π΅ всСгда. ΠŸΠ΅Ρ€Π΅Π΄ GUI Π² Ρ…ΠΎΠ΄Ρƒ Π±Ρ‹Π» Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» β€” простой тСкстовый
интСрфСйс ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, Π³Π΄Π΅ вмСсто Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ Π½Π° экранС ΠΌΡ‹ Π²Π²ΠΎΠ΄ΠΈΠ»ΠΈ
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹.

И хотя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ большая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° оставила Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»
Π΄Π°Π»Π΅ΠΊΠΎ ΠΏΠΎΠ·Π°Π΄ΠΈ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΡ‚ΠΎΠΊ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ, ΠΏΡ€Π°Π²Π΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» всё Π΅Ρ‰Π΅
остаётся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ
языков программирования Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². Go Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, поэтому
ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Go, понадобится элСмСнтарноС ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ
Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π».

Windows

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» (ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку) Π² Windows, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ
клавиш Win+R (удСрТивая ΠΊΠ»Π°Π²ΠΈΡˆΡƒ с Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠΎΠΌ Windows Π½Π°ΠΆΠΌΠΈΡ‚Π΅ R), ввСсти Π²
появившССся ΠΎΠΊΠ½ΠΎ cmd. exe ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Enter. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Π΅Ρ€Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ,
ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΆΠ΅:

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ командная строка запускаСтся ΠΈΠ· вашСй домашнСй Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ (Π² ΠΌΠΎΡ‘ΠΌ
случаС это C:\Users\caleb). Π’Ρ‹ ΠΎΡ‚Π΄Π°Ρ‘Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, набирая ΠΈΡ… Π² этом
ΠΎΠΊΠ½Π΅ ΠΈ наТимая Enter. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ dir, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚
содСрТимоС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π½Π° экран. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

C:\Users\caleb>dir
Volume in drive C has no label.
Volume Serial Number is B2F5-F125

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cd. НапримСр, Ρ‚Π°ΠΌ
навСрняка Π΅ΡΡ‚ΡŒ дирСктория ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Desktop. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΅Ρ‘
содСрТимоС, Π½Π°Π±Ρ€Π°Π² cd Desktop, Π° Π·Π°Ρ‚Π΅ΠΌ dir. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² домашнюю
Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ имя .. (Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ): cd ... Одна Ρ‚ΠΎΡ‡ΠΊΠ°
ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (извСстСн ΠΊΠ°ΠΊ рабочая дирСктория), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ cd .
Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сдСлаСт. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, сущСствуСт Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ этих Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΏΠΎΠ»Π½Π΅ достаточно для Π½Π°Ρ‡Π°Π»Π°.

OSX

Π’ OSX Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ, пСрСйдя Π² Finder β†’ Applications β†’ Utilities β†’
Terminal. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ:

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, командная строка запускаСтся ΠΈΠ· вашСй домашнСй Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ (Π² ΠΌΠΎΡ‘ΠΌ
случаС это /Users/caleb). Π’Ρ‹ ΠΎΡ‚Π΄Π°Ρ‘Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, набирая ΠΈΡ… Π² этом
ΠΎΠΊΠ½Π΅ ΠΈ наТимая Enter. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ls, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ содСрТимоС
Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π½Π° экран. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

caleb-min:~ caleb$ ls
Desktop      Downloads      Movies     Pictures
Documents    Library        Music      Public

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cd. НапримСр, Ρ‚Π°ΠΌ
навСрняка Π΅ΡΡ‚ΡŒ дирСктория ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Desktop. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΅Ρ‘
содСрТимоС Π½Π°Π±Ρ€Π°Π² cd Desktop, Π° Π·Π°Ρ‚Π΅ΠΌ ls. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² домашнюю
Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ имя .. (Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ): cd ... Одна Ρ‚ΠΎΡ‡ΠΊΠ°
ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (извСстСн ΠΊΠ°ΠΊ рабочая дирСктория), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ cd .
Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сдСлаСт. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, сущСствуСт Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ этих Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΏΠΎΠ»Π½Π΅ достаточно для Π½Π°Ρ‡Π°Π»Π°.

ВСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ инструмСнтом программиста ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния
являСтся тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. ВСкстовыС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Microsoft Word ΠΈΠ»ΠΈ OpenOffice), Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ послСдних,
Ρ‚Π°ΠΌ отсутствуСт ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΏΠΎΠ»ΡƒΠΆΠΈΡ€Π½Ρ‹ΠΉ, курсив ΠΈ Ρ‚.ΠΏ.), Ρ‡Ρ‚ΠΎ
Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с простым тСкстом. Как Π² OSX, Ρ‚Π°ΠΊ ΠΈ
Π² Windows, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡƒΠΆΠ΅ присутствуСт встроСнныС тСкстовыС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹. Но ΠΎΠ½ΠΈ
ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π² возмоТностях, поэтому я Π±Ρ‹ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΡˆΠ΅.

Π”Π°Π±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ установку, Π½Π° сайтС ΠΊΠ½ΠΈΠ³ΠΈ golang-book. com доступСн
ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ инсталлятор. Он установит Go, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ инструмСнты, тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ
настроит ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния.

Windows

Для Windows инсталлятор установит тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ SciTe. Π’Ρ‹ смоТСтС Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ
Π² мСню ΠŸΡƒΡΠΊ β†’ ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β†’ Go β†’ SciTe. ПослС запуска Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ
Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ:

ВСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ содСрТит Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π±Π΅Π»ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для Π²Π²ΠΎΠ΄Π° тСкста. Π‘Π»Π΅Π²Π° ΠΎΡ‚
этой области ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° строк. Π’ Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΎΠΊΠ½Π° находится строка
состояния, Π³Π΄Π΅ отобраТаСтся информация ΠΎ Ρ„Π°ΠΉΠ»Π΅ ΠΈ вашСм Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ мСстополоТСнии Π²
Π½Ρ‘ΠΌ (сСйчас ΠΎΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ находимся Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки,
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌ вставки тСкста, Π° окончания строк ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ Π²
Windows-стилС).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ», Π²Ρ‹Π±Ρ€Π°Π² Π΅Π³ΠΎ Π² Π΄ΠΈΠ°Π»ΠΎΠ³Π΅, находящимся Π² мСню File β†’ Open.
Π€Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сохранСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ мСню File β†’ Save ΠΈΠ»ΠΈ File β†’ Save As.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ дСйствия Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ достаточно часто, Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π±Ρ‹Π»ΠΎ
Π±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ сочСтания клавиш для быстрого доступа ΠΊ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌ мСню. Π’ΠΎΡ‚ самыС
распространённыС ΠΈΠ· Π½ΠΈΡ…:

  • Ctrl + S β€” ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ»

  • Ctrl + X β€” Π²Ρ‹Ρ€Π΅Π·Π°Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст (ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ,
    ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сохранив Π² Π±ΡƒΡ„Π΅Ρ€Π΅ ΠΎΠ±ΠΌΠ΅Π½Π°, для Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ вставки ΠΏΠΎΠ·ΠΆΠ΅)

  • Ctrl + C β€” ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ тСкста Π²
    Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°

  • Ctrl + V β€” Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ тСкст Π½Π° мСсто Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ полоТСния
    курсора ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π°

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ клавиши со стрСлками для Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΏΠΎ Ρ„Π°ΠΉΠ»Ρƒ, Home для
    ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² Π½Π°Ρ‡Π°Π»ΠΎ строки, Π° End для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² ΠΊΠΎΠ½Π΅Ρ†

  • Π£Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ Shift ΠΏΡ€ΠΈ использовании клавиш Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹
    Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ тСкста Π±Π΅Π· использования ΠΌΡ‹ΡˆΠΈ

  • Ctrl + F β€” ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ поиска ΠΏΠΎ
    содСрТимому Ρ„Π°ΠΉΠ»Π°

OSX

Для OSX установщик поставит Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Text Wrangler:

Как ΠΈ Scite Π½Π° Windows, ΠΎΠΊΠ½ΠΎ Text Wrangler содСрТит Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π±Π΅Π»ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π³Π΄Π΅
вводится тСкст. Π€Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ File β†’ Open, Π° сохранСны
с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ File β†’ Save ΠΈΠ»ΠΈ File β†’ Save As. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ сочСтания
клавиш:

  • ⌘ + S β€” ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ»

  • ⌘ + X β€” Π²Ρ‹Ρ€Π΅Π·Π°Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст (ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ,
    ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сохранив Π² Π±ΡƒΡ„Π΅Ρ€Π΅ ΠΎΠ±ΠΌΠ΅Π½Π°, для Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ вставки ΠΏΠΎΠ·ΠΆΠ΅)

  • ⌘ + C β€” ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ тСкста Π²
    Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°

  • ⌘ + V β€” Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ тСкст Π½Π° мСсто Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ полоТСния
    курсора ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π°

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ клавиши со стрСлками для Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΏΠΎ Ρ„Π°ΠΉΠ»Ρƒ

  • ⌘ + F β€” ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ поиска ΠΏΠΎ
    содСрТимому Ρ„Π°ΠΉΠ»Π°

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Go

Go β€” ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык программирования. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ исходный ΠΊΠΎΠ΄
(написанный Π²Π°ΠΌΠΈ ΠΊΠΎΠ΄) пСрСводится Π² язык, понятный ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅
Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Go, Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с Π΅Π³ΠΎ компилятором.

Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ‚ΠΎΡ€ установит Go автоматичСски. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ
языка. (Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° http://golang.org/)

Π”Π°Π²Π°ΠΉΡ‚Π΅ убСдимся, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ Π²Π²Π΅Π΄Ρ‘ΠΌ Ρ‚Π°ΠΌ:

Π’ ΠΎΡ‚Π²Π΅Ρ‚ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅:

Π’Π°Ρˆ Π½ΠΎΠΌΠ΅Ρ€ вСрсии ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Если Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅
ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Go состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄. Бписок всСх
доступных ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π½Π°Π±Ρ€Π°Π²:

О Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ….

Π’ΠΈΠΏΡ‹ β€” Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ использовали строковый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ
Hello World. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ мноТСство ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚,
ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊ Π½ΠΈΠΌ, ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ.
ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ слоТны для понимания, ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ
ΠΈΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Go.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ собака ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π¨Π°Ρ€ΠΈΠΊ. Π’ΡƒΡ‚ Β«Π¨Π°Ρ€ΠΈΠΊΒ» β€” это Β«Π‘ΠΎΠ±Π°ΠΊΠ°Β», этот Ρ‚ΠΈΠΏ
описываСт ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ свойств, присущий всСм собакам. Наши рассуТдСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹
Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅: Ρƒ собак 4 Π»Π°ΠΏΡ‹, Π¨Π°Ρ€ΠΈΠΊ β€” собака, Π·Π½Π°Ρ‡ΠΈΡ‚, Ρƒ Π¨Π°Ρ€ΠΈΠΊΠ° 4 Π»Π°ΠΏΡ‹.
Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² языках программирования Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Ρƒ всСх строк Π΅ΡΡ‚ΡŒ
Π΄Π»ΠΈΠ½Π°; x β€” строка, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ Ρƒ x Π΅ΡΡ‚ΡŒ Π΄Π»ΠΈΠ½Π°.

Π’ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΌΡ‹ часто Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ мноТСствах. НапримСр, ℝ (мноТСство всСх
вСщСствСнных чисСл) ΠΈΠ»ΠΈ β„• (мноТСство всСх Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ… чисСл). ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт
этих мноТСств ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ свойства, ΠΊΠ°ΠΊ ΠΈ всС ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ элСмСнты этого
мноТСства. НапримСр, всС Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Π΅ числа ассоциативны — «для всСх Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ…
чисСл a, b ΠΈ c выполняСтся: a + (b + c) = (a + b) + c ΠΈ a Γ— (b Γ— c) = (a Γ— b) Γ—
c
Β»; Π² этом смыслС мноТСства схоТи с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² языках программирования Ρ‚Π΅ΠΌ,
Ρ‡Ρ‚ΠΎ всС значСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ свойства.

Go β€” это язык программирования со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ
ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ всСгда ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈ этот Ρ‚ΠΈΠΏ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. БтатичСская
типизация, Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ. Π’Ρ‹ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚Π΅ ΠΊΡƒΡ‡Ρƒ
Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ошибки, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅
ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Однако Ρ‚ΠΈΠΏΡ‹ Π΄Π°ΡŽΡ‚ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚
ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ распространённых ошибок.

Π’ Go Π΅ΡΡ‚ΡŒ нСсколько встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ сСйчас ознакомимся.

Числа

Π’ Go Π΅ΡΡ‚ΡŒ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² для прСдставлСния чисСл. Π’ΠΎΠΎΠ±Ρ‰Π΅, ΠΌΡ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ
числа Π½Π° Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… класса: Ρ†Π΅Π»Ρ‹Π΅ числа ΠΈ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

Π¦Π΅Π»Ρ‹Π΅ числа

Π¦Π΅Π»Ρ‹Π΅ числа, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈΡ… матСматичСскиС ΠΊΠΎΠ»Π»Π΅Π³ΠΈ, β€” это числа Π±Π΅Π·
вСщСствСнной части. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ дСсятичного прСдставлСния чисСл, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΡ‹, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС.

Наша систСма строится Π½Π° 10 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ†ΠΈΡ„Ρ€Π°Ρ…. Когда ΠΌΡ‹ исчСрпываСм доступныС Π½Π°ΠΌ
Ρ†ΠΈΡ„Ρ€Ρ‹, ΠΌΡ‹ прСдставляСм большоС число, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½ΠΎΠ²ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ 2 (Π° Π·Π°Ρ‚Π΅ΠΌ 3, 4, 5, …)
числа ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ. НапримСр, число, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π° 9, это 10, число,
ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π° 99, это 100 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Π½ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚
Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2 Ρ†ΠΈΡ„Ρ€Ρ‹ вмСсто 10. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, подсчСт выглядит Ρ‚Π°ΠΊ: 0, 1, 10, 11, 100, 101,
110, 111 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π”Ρ€ΡƒΠ³ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΎΠΉ систСмой счислСния, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ
ΠΌΡ‹, ΠΈ Ρ‚ΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ — всС Ρ‚ΠΈΠΏΡ‹ чисСл ΠΈΠΌΠ΅ΡŽΡ‚ строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ
Ρ€Π°Π·ΠΌΠ΅Ρ€. Π£ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство Ρ†ΠΈΡ„Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ чСтырСхразрядноС число
ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: 0000, 0001, 0010, 0011, 0100. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ
Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° Π»ΠΈΠΌΠΈΡ‚, ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² просто вСрнутся ΠΊ самому Π½Π°Ρ‡Π°Π»Ρƒ (Ρ‡Ρ‚ΠΎ
ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΠΎΡ‡Π΅Π½ΡŒ странного повСдСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹).

Π’ Go ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Ρ†Π΅Π»Ρ‹Ρ… чисСл: uint8, uint16, uint32,
uint64, int8, int16, int32 ΠΈ int64. 8, 16, 32 ΠΈ 64 Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ,
сколько Π±ΠΈΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΈΠΏ. uint ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«unsigned integerΒ»
(Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ int ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«signed integerΒ» (Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅
Ρ†Π΅Π»ΠΎΠ΅). Π‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния (ΠΈΠ»ΠΈ
ноль). Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ этому ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° Ρ‚ΠΈΠΏΠ°-псСвдонима: byte (Ρ‚ΠΎ ΠΆΠ΅
самоС, Ρ‡Ρ‚ΠΎ uint8) ΠΈ rune (Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ int32). Π‘Π°ΠΉΡ‚Ρ‹ β€” ΠΎΡ‡Π΅Π½ΡŒ
распространСнная Π΅Π΄ΠΈΠ½ΠΈΡ†Π° измСрСния Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… (1 Π±Π°ΠΉΡ‚ = 8 Π±ΠΈΡ‚, 1024 Π±Π°ΠΉΡ‚Π° = 1
ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚, 1024 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π° = 1 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, …), ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ поэтому Ρ‚ΠΈΠΏ byte Π² Go часто
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ². Π’Π°ΠΊΠΆΠ΅ сущСствуСт 3 машинно-зависимых
цСлочислСнных Ρ‚ΠΈΠΏΠ°: uint, int ΠΈ uintptr. Они машинно-зависимы, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ
ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ зависит ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами β€” просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΈΠΏ int.

Числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ

Числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ β€” это числа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π²Π΅Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ
(вСщСствСнныС числа) (1.234, 123.4, 0.00001234, 12340000). Π˜Ρ… прСдставлСниС Π²
ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ довольно слоТно ΠΈ Π½Π΅ особо Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΈΡ… использования. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹
просто Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ:

  • Числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π½Π΅Ρ‚ΠΎΡ‡Π½Ρ‹. Π‘Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° число Π²ΠΎΠΎΠ±Ρ‰Π΅ нСльзя
    ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ. НапримСр, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вычислСния 1.01 - 0.99 Π±ΡƒΠ΄Π΅Ρ‚
    0.020000000000000018 — число ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΊΠΎΠ΅ ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ, Π½ΠΎ Π½Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС.

  • Как ΠΈ Ρ†Π΅Π»Ρ‹Π΅ числа, числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ (32 Π±ΠΈΡ‚Π°
    ΠΈΠ»ΠΈ 64 Π±ΠΈΡ‚Π°). ИспользованиС большСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ (сколько Ρ†ΠΈΡ„Ρ€
    ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для вычислСния)

  • Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ числам ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ: Β«not a
    numberΒ» (Π½Π΅ число) (NaN, для Π²Π΅Ρ‰Π΅ΠΉ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ 0/0), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈ
    ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ (+∞ ΠΈ βˆ’βˆž).

Π’ Go Π΅ΡΡ‚ΡŒ Π΄Π²Π° вСщСствСнных Ρ‚ΠΈΠΏΠ°: float32 ΠΈ float64 (соотвСтствСнно, часто
Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ вСщСствСнными числами с ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ). А Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π²Π°
Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° для прСдставлСния комплСксных чисСл (чисСл с ΠΌΠ½ΠΈΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ):
complex64 ΠΈ complex128. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΈΠΏΠ° float64,
ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ-ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ числа. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, создайтС ΠΏΠ°ΠΏΠΊΡƒ
Β«chapter3Β» с Ρ„Π°ΠΉΠ»ΠΎΠΌ main.go Π²Π½ΡƒΡ‚Ρ€ΠΈ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:

package main

import "fmt"

func main() {
    fmt.Println("1 + 1 = ", 1 + 1)
}

Если Π²Ρ‹ запуститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это:

$ go run main.go
1 + 1 = 2

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ схоТа с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ написали Π² Π³Π»Π°Π²Π΅ 2.
Она содСрТит Ρ‚Ρƒ ΠΆΠ΅ строку с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‚Ρƒ ΠΆΠ΅ строку с ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ, Ρ‚ΠΎ ΠΆΠ΅
ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Println. Π’ этот Ρ€Π°Π· вмСсто
ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ строки Hello World ΠΌΡ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ строку 1 + 1 = с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ
Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выраТСния 1 + 1. Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… частСй: числового
Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° 1 (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ‚ΠΈΠΏΠΎΠΌ int), ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° + (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт
слоТСниС) ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ числового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° 1. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅
самоС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ:

fmt.Println("1 + 1 =", 1.0 + 1.0)

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ .0, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Go, Ρ‡Ρ‚ΠΎ это число с
ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Π° Π½Π΅ Ρ†Π΅Π»ΠΎΠ΅. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‚
ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€Π΅ΠΆΠ΄Π΅.

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ слоТСнию, Π² Go имССтся нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

Π›ΠΈΡ‚Π΅Ρ€Π°Π»ΠŸΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
+слоТСниС
Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅
*ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅
/Π΄Π΅Π»Π΅Π½ΠΈΠ΅
%остаток ΠΎΡ‚ дСлСния

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ

Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² Π³Π»Π°Π²Π΅ 2, строка β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ
Π΄Π»ΠΈΠ½Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для прСдставлСния тСкста. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π² Go состоят ΠΈΠ· нСзависимых
Π±Π°ΠΉΡ‚ΠΎΠ², ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ (символы ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ
китайский, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ нСсколькими Π±Π°ΠΉΡ‚Π°ΠΌΠΈ).

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ "Hello World"
ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ апострофов `Hello World`. Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ
строки Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ строки ΠΈ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ особыС ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов. НапримСр, \n Π±ΡƒΠ΄Π΅Ρ‚
Π·Π°ΠΌΠ΅Π½Π΅Π½Π° символом Π½ΠΎΠ²ΠΎΠΉ строки, Π° \t — символом табуляции.

РаспространСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ строками Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ строки
len("Hello World"), доступ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ символу Π² строкС "Hello World"[1], ΠΈ
ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡŽ Π΄Π²ΡƒΡ… строк "Hello " + "World". Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ
ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ всё это:

package main

import "fmt"

func main() {
    fmt.Println(len("Hello World"))
    fmt.Println("Hello World"[1])
    fmt.Println("Hello " + "World")
}

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ:

  • ΠŸΡ€ΠΎΠ±Π΅Π» Ρ‚ΠΎΠΆΠ΅ считаСтся символом, поэтому Π΄Π»ΠΈΠ½Π° строки 11 символов, Π° Π½Π΅ 10 ΠΈ
    Ρ‚Ρ€Π΅Ρ‚ΡŒΡ строка содСрТит "Hello " вмСсто "Hello".

  • Π‘Ρ‚Ρ€ΠΎΠΊΠΈ β€œΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡβ€ начиная с 0, Π° Π½Π΅ с 1. [1] даст Π²Π°ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт, Π° Π½Π΅
    ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ. Π’Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ 101 вмСсто e, ΠΊΠΎΠ³Π΄Π° выполняСтС
    ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π­Ρ‚ΠΎ происходит ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ символ прСдставляСтся Π±Π°ΠΉΡ‚ΠΎΠΌ (ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅,
    Π±Π°ΠΉΡ‚ β€” это Ρ†Π΅Π»ΠΎΠ΅ число).

    МоТно Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± индСксации Ρ‚Π°ΠΊ: "Hello World" 1. Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ это Ρ‚Π°ΠΊ: «строка
    Hello World позиция 1Β», Β«Π½Π° 1 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ строки Hello WorldΒ» ΠΈΠ»ΠΈ Β«Π²Ρ‚ΠΎΡ€ΠΎΠΉ символ
    строки Hello WorldΒ».

  • ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ символ, Ρ‡Ρ‚ΠΎ ΠΈ слоТСниС. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Go выясняСт,
    Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ, полагаясь Π½Π° Ρ‚ΠΈΠΏΡ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Если ΠΏΠΎ ΠΎΠ±Π΅ стороны ΠΎΡ‚ +
    находятся строки, компилятор ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠΌΠ΅Π»ΠΈ Π² Π²ΠΈΠ΄Ρƒ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡŽ, Π° Π½Π΅
    слоТСниС (вСдь слоТСниС для строк бСссмыслСнно).

ЛогичСскиС Ρ‚ΠΈΠΏΡ‹

БулСвский Ρ‚ΠΈΠΏ (Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ Ρ‚Π°ΠΊ Π² Ρ‡Π΅ΡΡ‚ΡŒ Π”ΠΆΠΎΡ€Π΄ΠΆΠ° Буля) β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ΄Π½ΠΎΠ±ΠΈΡ‚Π½Ρ‹ΠΉ
цСлочислСнный Ρ‚ΠΈΠΏ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для прСдставлСния истинности ΠΈ лоТности. Π‘ этим Ρ‚ΠΈΠΏΠΎΠΌ
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

Π›ΠΈΡ‚Π΅Ρ€Π°Π»ΠŸΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
&&И
||Π˜Π›Π˜
!НЕ

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΈΡ… использованиС:

func main() {
    fmt.Println(true && true)
    fmt.Println(true && false)
    fmt.Println(true || true)
    fmt.Println(true || false)
    fmt.Println(!true)
}

Запуск этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ вывСсти:

$ go run main.go
true
false
true
true
false

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ истинности, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ эти ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚:

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
true && truetrue
true && falsefalse
false && truefalse
false && falsefalse
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
true || truetrue
true || falsetrue
false || truetrue
false || falsefalse
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
!truefalse
!falsetrue

Всё это β€” ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Go ΠΈ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ основой, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ строятся всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹.

Π—Π°Π΄Π°Ρ‡ΠΈ

  • Как хранятся числа Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅?

  • ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² дСсятичной систСмС самоС большоС число ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Ρ†ΠΈΡ„Ρ€Ρ‹ — это 9, Π°
    ΠΈΠ· Π΄Π²ΡƒΡ… — 99. Π’ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ систСмС самоС большоС число ΠΈΠ·
    Π΄Π²ΡƒΡ… Ρ†ΠΈΡ„Ρ€ это 11 (3), самоС большоС число ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ†ΠΈΡ„Ρ€ это 111 (7) ΠΈ самоС
    большоС число ΠΈΠ· 4 Ρ†ΠΈΡ„Ρ€ это 1111 (15). Вопрос: ΠΊΠ°ΠΊΠΎΠ²ΠΎ самоС большоС число ΠΈΠ· 8
    Ρ†ΠΈΡ„Ρ€? (Подсказка: 101-1=9 ΠΈ 102-1=99)

  • Π’ зависимости ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Go ΠΊΠ°ΠΊ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅
    ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая вычисляСт 32132 Γ— 42452 ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ это Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»
    (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ * для умноТСния).

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ строка? Как Π½Π°ΠΉΡ‚ΠΈ Π΅Ρ‘ Π΄Π»ΠΈΠ½Ρƒ?

  • КакоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
    (true && false) || (false && true) || !(false && false)?

Golang: основы для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Golang, ΠΈΠ»ΠΈ Go β€” язык программирования, Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ Π² 2007 Π³ΠΎΠ΄Ρƒ сотрудниками ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google. Π’ этом руководствС ΠΏΠΎ Golang ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ПО ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Go ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ динамичСского Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ содСрТит Π±ΠΎΠ³Π°Ρ‚ΡƒΡŽ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ встроСнныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ€ΠΎΠ΄Π΅ массивов с динамичСским Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ ассоциативных массивов.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² многопоточности Go ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ распрСдСлСниС вычислСний ΠΈ сСтСвого взаимодСйствия, Π° соврСмСнныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ программисту ΠΌΠΈΡ€ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° быстро компилируСтся, ΠΏΡ€ΠΈ этом Π΅ΡΡ‚ΡŒ сборщик мусора ΠΈ поддСрТиваСтся рСфлСксия.

Π­Ρ‚ΠΎ быстрый, статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык, ΠΏΡ€ΠΈ использовании ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ создаСтся Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ использования динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Π’Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π½Π΅ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

    1. Настройка окруТСния
    2. Бинтаксис
    3. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Golang?
    4. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Настройка окруТСния

Для Π½Π°Ρ‡Π°Π»Π° скачаСм 64-Π±ΠΈΡ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Go c ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта. Π’ зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы выполняСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия.

UNIX / Linux / MacOS / FreeBSD

ИзвлСкаСм скачанный Π°Ρ€Ρ…ΠΈΠ² Π² ΠΏΠ°ΠΏΠΊΡƒ /usr/local/go. НапримСр:

tar -C /usr/local -xzf go1.16.linux-amd64.tar.gz

ДобавляСм ΠΏΠ°ΠΏΠΊΡƒ /usr/local/go/bin Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния PATH:

export PATH=$PATH:/usr/local/go/bin

Windows

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ MSI Ρ„Π°ΠΉΠ» ΠΈ слСдуСм инструкциям. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ инструмСнты Go Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ Π‘:\Go. ΠŸΡ€ΠΈ установкС ΠΏΠ°ΠΏΠΊΠ° C :\Go\bin автоматичСски добавится Π² ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PATH.

Π§Ρ‚ΠΎΠ±Ρ‹ измСнСния вступили Π² силу, пСрСзапустим всС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΎΠΊΠ½Π° эмуляторов Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ установки, создав ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² Ρ„Π°ΠΉΠ» C:\Projects\Go\test.go:

package main

import "fmt"

func main() {
    fmt.Println("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Tproger!")
}

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ этот ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Бинтаксис

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹

КаТдая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° языкС Go состоит ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (packages). ΠŸΠ°ΠΊΠ΅Ρ‚ main β€” Π³Π»Π°Π²Π½Ρ‹ΠΉ, с Π½Π΅Π³ΠΎ начинаСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ импортируСтся ΠΏΠ°ΠΊΠ΅Ρ‚ fmt.

Π˜ΠΌΠΏΠΎΡ€Ρ‚

Π˜ΠΌΠΏΠΎΡ€Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ двумя способами.

Π’Π°ΠΊ:

import "fmt"
import "math"

ΠΈΠ»ΠΈ Ρ‚Π°ΠΊ:

import(
    "fmt"
    "math"
)

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

func function_name( [список ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²] ) [Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…] {
    Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
}

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈ Ρ‚ΠΈΠΏ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° опишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ add с двумя Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° int:

package main

import "fmt"

func add(a int, b int) int {
    return a + b
}

func main() {
    fmt.Println("Π‘ΡƒΠΌΠΌΠ° Ρ€Π°Π²Π½Π° ", add(10, 19))
}

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ этот ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Go ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ компилятору ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎ мСстС ΠΈ ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ создаётся для этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ списком. ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° такая:

var [ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…] [Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…];

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° var опрСдСляСм ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π² ΠΊΠΎΠ½Ρ†Π΅ выраТСния.

ОбъявлСниС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‚Π°ΠΊ ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

package main

import "fmt"

var node, golang, angular bool

func main() {
    var x int
    fmt.Println(x, node, golang, angular)
}

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ этот ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π°

Π’ языкС Go ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° β€” это for, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ повторяСт список инструкций Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·. Π¦ΠΈΠΊΠ» состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

  1. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ. ВыполняСтся ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ.
  2. УсловиС. ВычисляСтся ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ.
  3. Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚. ВыполняСтся послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° Ρ†ΠΈΠΊΠ»Π° выглядит Ρ‚Π°ΠΊ:

for [условиС | (инициализация; условиС; ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚) | Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½] {
    [Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°]
}

ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Ρ†ΠΈΠΊΠ»Π°.

Π¦ΠΈΠΊΠ» останавливаСт свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΊΠΎΠ³Π΄Π° условиС ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… языков, ΠΊΠ°ΠΊ C, Java ΠΈ JavaScript, пСрСчислСнныС выраТСния Ρ†ΠΈΠΊΠ»Π° Π½Π΅ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ скобками. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ лишь Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, ΠΎΠ±Ρ€Π°ΠΌΠ»ΡΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

package main

import "fmt"

func main() {
    sum := 0
    for i := 0; i < 8; i++ {
        sum += i
    }
    fmt.Println("Π‘ΡƒΠΌΠΌΠ° Ρ€Π°Π²Π½Π° ", sum)
}

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ этот ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

Π€ΠΎΡ€ΠΌΠ° опрСдСлСния условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² Go выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

if [условиС] {
   ...
}

Если Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»Π΅ условия истинно, ΠΊΠΎΠ΄, Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками, выполнится.

УсловиС описываСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. НапримСр:

  • true β€” выполняСтся всСгда;
  • a < 10 β€” выполняСтся, ΠΊΠΎΠ³Π΄Π° a мСньшС 10;
  • (a < b) || (a < c) β€” выполняСтся, ΠΊΠΎΠ³Π΄Π° a мСньшС b ΠΈΠ»ΠΈ a мСньшС c;
  • (a < b) && (a < c) β€” выполняСтся, ΠΊΠΎΠ³Π΄Π° a мСньшС b ΠΈ a мСньшС c.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

package main

import (
    "fmt"
)

func main() {
    if true {
        fmt.Println("Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ выполнится всСгда")
    }

    if false {
        fmt.Println("Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ выполнится Π½ΠΈΠΊΠΎΠ³Π΄Π°")
    }
}

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ этот ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠœΠ°ΡΡΠΈΠ²Ρ‹

Π―Π·Ρ‹ΠΊ программирования Go Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ массивы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ· сСбя структуру Π΄Π°Π½Π½Ρ‹Ρ… фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для хранСния Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ Π½ΠΈΠΌΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ количСство элСмСнтов ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

var Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅_ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ [Ρ€Π°Π·ΠΌΠ΅Ρ€] Ρ‚ΠΈΠΏ_ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив balance, состоящий ΠΈΠ· дСсяти элСмСнтов Ρ‚ΠΈΠΏΠ° float32, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

var balance [10] float32

Если значСния элСмСнтов извСстны, для опрСдСлСния массива допустимо ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ:

var balance = []float32{1000.0, 2.0, 3.4, 7.0, 50.0}

Π”Π»ΠΈΠ½Π° массива Π½Π΅ измСняСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ каТСтся ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ: Π² Go Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° комфортная Ρ€Π°Π±ΠΎΡ‚Π° с массивами.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

package main

import "fmt"

func main() {
    var a [2]string
    a[0] = "ΠŸΡ€ΠΈΠ²Π΅Ρ‚"
    a[1] = "Tproger"
    fmt.Println(a[0], a[1])
    fmt.Println(a)

    primes := [6]int{2, 3, 5, 7, 11, 13}
    fmt.Println(primes)
}

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ этот ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π‘Ρ€Π΅Π·Ρ‹

Π‘Ρ€Π΅Π·Ρ‹ (Slices) Π² Go β€” абстракция Π½Π°Π΄ массивами. Π₯отя встроСнных способов ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива динамичСски ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ массив Π² Go Π½Π΅Ρ‚, срСзы ΡƒΠ±ΠΈΡ€Π°ΡŽΡ‚ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅. Они ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ программистами.

ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ срСз ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ массив, Π½ΠΎ Π±Π΅Π· указания Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ make:

var numbers []int /* срСз Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° */

/* numbers = []int{0,0,0,0,0} */

numbers = make([]int,5,5) /* срСз Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΈ Ρ‘ΠΌΠΊΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π²Π½ΠΎΠΉ 5 */

Π Π°Π·ΠΌΠ΅Ρ€ массива фиксирован, Π° Ρƒ срСза измСняСмый. По сути, срСз β€” Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ Π²ΠΈΠ΄ массива.

Π’ΠΈΠΏ []T β€” срСз с элСмСнтами Ρ‚ΠΈΠΏΠ° T.

a[0:5] β€” срСз 5 элСмСнтов массива a.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

package main

import "fmt"

func main() {
    primes := [6]int{2, 3, 5, 7, 11, 13}
    fmt.Println(primes)

    var s []int = primes[1:4]
    fmt.Println(s)
}

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ этот ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° (structure) β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ элСмСнты Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ структуру, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ выраТСния type ΠΈ struct.

Struct опрСдСляСт Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ соотвСтствуСт Π΄Π²Π° ΠΈ Π±ΠΎΠ»Π΅Π΅ элСмСнтов.

Type связываСт Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ имя с описаниСм структуры.

Π€ΠΎΡ€ΠΌΠ° описания выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

type struct_variable_type struct {
   member definition;
   member definition;
   ...
   member definition;
}

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ структура Ρ‚ΠΈΠΏΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ объявлСнии Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

variable_name := structure_variable_type {Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2...Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅N}

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнтам структуры, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ доступа ΠΊ элСмСнту. Рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

package main

import "fmt"

type Vertex struct {
    X int
    Y int
}

func main() {
    v := Vertex{1, 2}
    v.X = 4
    fmt.Println(v.X)
}

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ этот ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π§Π΅ΠΌ Golang Ρ…ΠΎΡ€ΠΎΡˆ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…?

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ языка Golang Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π½Π° основС ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ повсСднСвных Π·Π°Π΄Π°Ρ‡ ΠΈ Π½Π΅ прСслСдуСт Ρ†Π΅Π»ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ€Ρ‹Π² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Go Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ряд Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки (C++, Java ΠΈ Python) Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ. Но Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ ΠΎΠ± использовании этого языка.

Π§ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ ΠΊ синтаксису Go, ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Ρ‡ΡƒΠΆΠΎΠΉ ΠΊΠΎΠ΄ β€” Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π°Ρ‡Π°.

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° собствСнный Β«ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉΒ» способ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Π΅Ρ‰ΠΈ, поэтому Go навязываСт свой ΡΡ‚ΠΈΠ»ΡŒ программирования. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ вопросы Π²Ρ€ΠΎΠ΄Π΅ использования ΠΈΠ»ΠΈ нСиспользования Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок ΠΎΡ‚ΠΏΠ°Π΄Π°ΡŽΡ‚, ΠΈ остаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Golang ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ….

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ

Π—Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π° Go, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ мСньшС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании Π‘, Π·Π°Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡˆΠ΅. Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² β€” ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΉ компромисс, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ ΠΏΡ€ΠΈ нСобходимости достаточно просто ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° языкС Go.

МСньшС ошибок

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ошибок Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΌ ΠΈΠ»ΠΈ слоТном ΠΊΠΎΠ΄Π΅.

Go прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ срСдства для тСстирования. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, строгая типизация устраняСт ошибки Π²Ρ€ΠΎΠ΄Π΅ случайного сравнСния количСства яблок с количСством Π³Ρ€ΡƒΡˆ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π΅Ρ‰Ρ‘ Π½Π° этапС компиляции.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π³Π»ΡƒΠ±ΠΆΠ΅ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅, посмотритС Π½Π°ΡˆΡƒ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ бСсплатных ΠΊΠ½ΠΈΠ³ ΠΏΠΎ знакомству с языком программирования Go, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ β€” Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ малСнькиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ тонкости языка. Π£Π΄Π°Ρ‡ΠΈ!

Β 

НС смСшно? А здСсь смСшно: @ithumor

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«Basics of Golang [For Beginners]Β», с использованиСм Β«Golang Beginner TutorialΒ»

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go с нуля: 9 ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠΎΠ²

ΠšΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈ статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ – это всС ΠΎ языкС Go. Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go ΠΏΠΎ этому курсу.

Π Π°Π½Π΅Π΅ ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π»ΠΈ Π±Π»ΠΎΠ³ΠΈ, ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Go. ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΆΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎ Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠ°Ρ… с Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ понятной ΠΏΠΎΠ΄Π°Ρ‡Π΅ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π²Π²ΠΎΠ΄Π½ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ Π°Π²Ρ‚ΠΎΡ€ рассказываСт ΠΎΠ± истории программирования ΠΈ ΠΎ нСобходимости этого языка, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…. ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΡΡ‚ΡΡ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Go ΠΈ Perl Π½Π° Ρ‚Π΅ΠΌΡƒ скорости, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ удобства использования, Ρ‚. ΠΊ. Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»Π΅ΠΊΡ‚ΠΎΡ€, примСняСтся ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go. ΠžΡ‡Π΅Π½ΡŒ доступноС ΠΈ понятноС объяснСниС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, ΠΈ ΠΏΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ, β€œHello World”. Как ΠΆΠ΅ Π±Π΅Π· Π½Π΅Π³ΠΎ?

Из этой Π»Π΅ΠΊΡ†ΠΈΠΈ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ½ΠΈ Π±Ρ‹Π²Π°ΡŽΡ‚, ΠΈ Π² Ρ‡Π΅ΠΌ ΠΈΡ… ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Go. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ ΠΎ структурах (struct, embeded) ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ООП Π² Π΄Π°Π½Π½ΠΎΠΌ языкС. Автор ΠΏΠΎΠ²Π΅Π΄Π°Π΅Ρ‚ ΠΎΠ± интСрфСйсС Π² Go, Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈ интСрСсной особСнности интСрфСйсов – ΠΈΡ… ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ с постфиксом -er (Reader, Fixer ΠΈ Ρ‚. Π΄.) ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Duck typing.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go Π΄Π°Π΅Ρ‚ сразу большой ΠΏΡ€ΠΎΡ„ΠΈΡ‚ – этот ЯП асинхронный ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ. Основой асинхронности являСтся процСсс. Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΎΠ½ΠΈ (процСссы) нСзависимы Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ своС адрСсноС пространство. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса Π½Π΅ доступны Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Π›Π΅ΠΊΡ‚ΠΎΡ€ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ, коснСтся Go-Ρ€ΡƒΡ‚ΠΈΠ½ ΠΈ основных ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² для синхронизации Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ языка: ΠΊΠ°Π½Π°Π»Ρ‹, ΠΏΠ°ΠΊΠ΅Ρ‚ sync, atomic.

Π’ этой Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡΠ΅Ρ‚ΡŒΡŽ. ВсСм извСстно, Ρ‡Ρ‚ΠΎ для связи Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… процСссов Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сокСт ΠΈ Ρ‡Π°Ρ‰Π΅ всСго ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» TCP. Π‘Ρ‚Π°Ρ‚ΡŒΡ Π½Π°ΡƒΡ‡ΠΈΡ‚: ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сСтСвоС соСдинСниС Π² Golang, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ послС установлСния ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚Π°, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ. ЗанятиС Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΎ β€œΡ€Π°ΡΡˆΠ°Ρ€ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌβ€ экрана ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ коммСнтариями.

Π’ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊ начинаСтся с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСссии ΠΈ cookie, для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹, ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ этих Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ влияСт Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, написанный Π½Π° Go. Π”Π°Π»Π΅Π΅ Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ нСпосрСдствСнному Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ Π‘Π£Π‘Π”. MySQL ΠΈ PostgreSQL Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ, поэтому, зная ΠΎΠ΄Π½Ρƒ Π‘Π£Π‘Π”, Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΎΡΠΈΠ»ΠΈΡ‚ΡŒ Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π°. А Π²ΠΎΡ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΎ Memcached, Redis, mongoDB ΠΈ ORM Π±ΡƒΠ΄Π΅Ρ‚ интСрСсно Π΄Π°ΠΆΠ΅ профСссионалу.

На этой Π»Π΅ΠΊΡ†ΠΈΠΈ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ массу ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ систСмС тСстирования, ΡŽΠ½ΠΈΡ‚-тСстах ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… инструмСнтах для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ своСго прилоТСния. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ ΡƒΡ€ΠΎΠΊΠ° Π±ΡƒΠ΄ΡƒΡ‚ систСмы Continuos Integration, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ сборкС ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ сСрвСрС. БлоТная, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ полСзная Ρ‚Π΅ΠΌΠ° для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².Β  Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ популярныС GitLab ΠΈΠ»ΠΈ GitHub, Ρ‚ΠΎ для тСстирования ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ GitLab CI ΠΈ Travis CI соотвСтствСнно.

Π―Π·Ρ‹ΠΊ программирования Go строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, ΠΈ Π²Ρ‹ Π² основном ΠΏΠΈΡˆΠ΅Ρ‚Π΅ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, привязанный ΠΊ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ структурам ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ°ΠΌ. Π”Π°Π½Π½Ρ‹ΠΉ ЯП ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ интСрСсной ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ – ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ структуру ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² основном ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ собствСнных Ρ‚ΠΈΠΏΠΎΠ². Π”Π°Π½Π½Ρ‹ΠΉ процСсс называСтся рСфлСксиСй. О Π½Π΅ΠΉ, Π΅Π΅ Π·Π°ΠΊΠΎΠ½Π°Ρ… ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ… использования ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π² сСдьмой сСкции курса.

Π’ соврСмСнном ΠΌΠΈΡ€Π΅ бизнСса всС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ максимально быстро ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ. Если ПО Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Ρ‚ΠΎ бизнСс тСряСт дСньги Π½Π° обСспСчСнии Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… мощностСй. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстро ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ ΠΌΠ°Π»ΠΎ рСсурсов. Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ Π²Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΈΡΠΊΠ°Ρ‚ΡŒ слабыС мСста Π² софтС, ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ.

Как извСстно ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π»Π΅ΠΊΡ†ΠΈΠΉ, Golang примСняСтся для сСрвисов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ сСтСвыС запросы. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡΠ΅Ρ‚ΡŒΡŽ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Но сущСствуСт Ρ‚Π°ΠΊΠΎΠ΅ понятиС, ΠΊΠ°ΠΊ контСкст – информация, пСрСдаваСмая Π²ΠΎ всСх запросах ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с API. Об этой Π½Π΅ΠΈΠ·Π²Π΅Π΄Π°Π½Π½ΠΎΠΉ области ΠΈ расскаТСт Π²Π°ΠΌ Π°Π²Ρ‚ΠΎΡ€ Π² послСднСй Π»Π΅ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

МногиС ΠΈΠ· нас ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… языков Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚. Если Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Β«Π‘ΠΈΒ» ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с этим миримся с Π΅Π³ΠΎ ограничСниями. Когда Π½Π°ΠΌ трСбуСтся ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΌΡ‹ Β«Π΄Ρ€ΡƒΠΆΠΈΠΌΒ» с Ρ‚Π°ΠΊΠΈΠΌ языком, ΠΊΠ°ΠΊ Β«ΠŸΠΈΡ‚ΠΎΠ½Β», оТидая ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Erlang Π΄Π°Ρ‘Ρ‚ Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ высокораспараллСлСнныС распрСдСлённыС прилоТСния, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅Π³ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹.

ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π»ΠΎΠΌΠ°Π΅Ρ‚ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ систСму ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ, ΠΏΡ€ΠΈΠ½ΡΡ‚ΡƒΡŽ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках, ΠΈΠΌΠ΅Π½Π½ΠΎ Go. Он сочСтаСт Π² сСбС прСимущСства мноТСства языков, освобоТдая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‚ ряда ΠΈΡ… нСдостатков.

Π―Π·Ρ‹ΠΊ Go β€” это Β«Π‘ΠΈΒ» Π½Π° стСроидах?

Когда 10 Π»Π΅Ρ‚ Ρ‚ΠΎΠΌΡƒ Π½Π°Π·Π°Π΄ КСна Вомпсона, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ участвовал Π² создании языка Β«Π‘ΠΈΒ», спросили, Π° ΠΊΠ°ΠΊΠΎΠ²Ρ‹ΠΌ Π±Ρ‹ ΠΎΠ½ сдСлал Π΄Π°Π½Π½Ρ‹ΠΉ язык Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΎΠ½ стал Π±Ρ‹ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Limbo. ПослС этого ΠΏΡ€ΠΎΡˆΠ»ΠΎ достаточно ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ Вомпсон вмСстС с Π ΠΎΠ±ΠΎΠΌ Пайком (Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€Π° языка C) приняли участиС Π² создании Go, ΡΡ‚Π°Π²ΡˆΠ΅Π³ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ смыслС пСрСосмыслСниСм ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ развития Limbo. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Go прСдставили ΠΌΠΈΡ€Ρƒ, ΠΎΠ½ сразу стал бСстсСллСром. И ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ это 10 ноября 2009 Π³ΠΎΠ΄Π°.

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ успСху способствовали ΠΈΠΌΠ΅Π½Π° Π°Π²Ρ‚ΠΎΡ€ΠΎΠ², извСстных Π² качСствС создатСлСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы UNIX, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ UTF-8, языка Β«Π‘ΠΈΒ». Π‘Ρ‹Π³Ρ€Π°Π»ΠΎ свою Ρ€ΠΎΠ»ΡŒ ΠΈ ΠΏΠΎΠΊΡ€ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Google, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² лабораториях этой ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΈ родился Π½Π° свСт Go.

МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ старт Π±Ρ‹Π» ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ. Однако ΠΎΠ΄Π½ΠΎ это Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π±Ρ‹ языку Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠ»Π°Π²Ρƒ, Ссли Π±Ρ‹ программистам Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π½Π΅Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ β€” Π½Π΅Ρ‡Ρ‚ΠΎ, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰Π΅Π΅ ΠΈ Тизнь, ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. И ΠΈΠΌΠ΅Π½Π½ΠΎ это Β«Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎΒ» присутствовало Π² языкС Go, имСлось Π² большом количСствС ΠΈ сдСлало Π΅Π³ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… аспСктах Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΌ.

«Би» сСгодняшнСго дня

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Go ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΊ систСмный язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сочСтаСт Π² сСбС ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ исполнСния ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, написанного Π½Π° C, с простотой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, присущСй Π±ΠΎΠ»Π΅Π΅ высокоуровнСвым скриптовым языкам, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ языки, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ встроСнныС срСдства ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. ΠŸΡ€ΠΈ этом Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°Ρ…, Ρ‚ΠΎ здСсь Go Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π½Π°ΠΌ Π½Π΅ΠΊΡƒΡŽ ΡΡ‚Ρ€Π°Π½Π½ΡƒΡŽ солянку, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· синтаксисов C, Pascal ΠΈ ADA. Π’ совокупности с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅ описаниСм создаётся сильноС ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π²ΠΎΡ…Π° (Ρ‚Π°ΠΊ Π±Ρ‹Π²Π°Π΅Ρ‚, Ссли видишь Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ ΠΎ супСр-ΠΌΠ΅Π³Π°-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ студСнтов ΠΈΠ· Π£Ρ€ΡŽΠΏΠΈΠ½ΡΠΊΠ°). Но скСпсис достаточно быстро исчСзаСт, ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΡˆΡŒ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Go ΠΈ понимаСшь, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ стал ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ, ΠΊΠ°ΠΊΠΎΠΉ Π΅ΡΡ‚ΡŒ сСйчас.

Π’ основС Go находятся 3 Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°:
1. ГарантируСтся высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ компиляции, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
2. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ΡΡ простота Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ тСхничСской ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅, присущСм высокоуровнСвым скриптовым языкам.
3. ВстроСны срСдства ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС ядра соврСмСнных процСссоров, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² ΠΆΠ΅Π»Π΅Π·Π΅.

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всё это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ? Π§Ρ‚ΠΎ ΠΆΠ΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π”Π°ΠΆΠ΅ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ рСфСрСнсная рСализация компилятора с языка Go ΠΌΠΎΠΆΠ΅Ρ‚ всСго Π·Π° Π΄ΠΎΠ»ΠΈ сСкунды ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрый ΠΊΠΎΠ΄, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ исполнСния Π±ΡƒΠ΄Π΅Ρ‚ сопоставима со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ΄Π°, написанного Π½Π° Β«Π‘ΠΈΒ» ΠΈΠ»ΠΈ C++. Однако здСсь слСдуСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ своих ΠΈΠΌΠ΅Π½ΠΈΡ‚Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² компилятор Go обСспСчиваСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ², Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ собствСнный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ распараллСливания ΠΈ встроСнный сборщик мусора.

Π‘ самых ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΌΠΈΠ½ΡƒΡ‚ язык создавался Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ максимально простым ΠΈ понятным ΠΊΠ°ΠΊ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ, Ρ‚Π°ΠΊ ΠΈ машинС. И ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΈ синтаксичСскиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Go Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ с оглядкой Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΠ»Π°ΡΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡ… простого Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ Π΄Π΅Π±Π°Π³Π³Π΅Ρ€, компилятор Π»ΠΈΠ±ΠΎ Π΄Π°ΠΆΠ΅ срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ язык получился достаточно прямолинСйным, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΌ спорных мСст ΠΈ нСочСвидностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ компилятора (яркий ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ³ΠΎ синтаксиса ΠΈ слоТной ΠΎΠ±Ρ‰Π΅ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠΈ β€” Ρ‚ΠΎΡ‚ ΠΆΠ΅ C++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡ€ΠΎΠΉ заставляСт компилятор Π² Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎΠΌ смыслС Π±ΡƒΠΊΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π° мСстС, Π° Π³ΠΎΠ»ΠΎΠ²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ‚Ρ€Π΅Ρ‰Π°Ρ‚ΡŒ ΠΎΡ‚ пСрСнапряТСния).

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ прямого ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ синтаксису, Ρ‚ΠΎΠΆΠ΅ Π±Ρ‹Π»ΠΈ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. НапримСр, язык Π½Π΅ содСрТит ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° нСявного привСдСния Ρ‚ΠΈΠΏΠΎΠ², Π° это ΠΎΠ±Π΅Ρ€Π΅Π³Π°Π΅Ρ‚ программиста ΠΎΡ‚ ошибок, позволяя ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅ компилятор. Π’Π°ΠΊΠΆΠ΅ Π² языкС отсутствуСт полноцСнная рСализация классов с ΠΈΡ… ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ ΠΈ наслСдованиСм. Π§Ρ‚ΠΎ касаСтся ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚ΠΎ ΠΎΠ½ задСйствуСт ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” это Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π»Ρ‘Π³ΠΊΠΈΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡ… созданиС обходится ΠΏΠΎΡ‡Ρ‚ΠΈ Π΄Π°Ρ€ΠΎΠΌ. Π’Π΅ΡΡŒΠΌΠ° ΠΏΡ€ΠΎΠ²ΠΎΡ€Π΅Π½ ΠΈ встроСнный сборщик мусора β€” Π² языкС попросту Π½Π΅Ρ‚ элСмСнтов, способных ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ. А Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ поставку Go Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ для Π»ΡŽΠ±Ρ‹Ρ… популярных срСдств программирования, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Vim.

ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈ сопровоТдСнии

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Go β€” систСмный язык, это Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π΅ΠΌΡƒ Π±Ρ‹Ρ‚ΡŒ довольно высокоуровнСвым, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для обСспСчСния программиста всСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ для быстрого ΠΈ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎΠ³ΠΎ написания ΠΊΠΎΠ΄Π°. Π―Π·Ρ‹ΠΊ содСрТит ряд высокоуровнСвых конструкций, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ассоциативныС массивы ΠΈ строки (ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ, Π΄Π΅Π»Π°Ρ‚ΡŒ срСзы, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ). Π˜ΠΌΠ΅Π΅Ρ‚ ΠΎΠ½ ΠΈ срСдства для создания своих Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… (ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ классам Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках), плюс срСдства для создания ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. И, разумССтся, ΠΎΠ½ Π»ΠΈΡˆΡ‘Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способны ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° любой участок памяти β€” Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ срыв стСка Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, написанном Π½Π° Go, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½.

Однако основноС, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Go Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ, Π΅ΡΡ‚ΡŒ Ρ‚Π° самая ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ синтаксиса ΠΈ ΠΏΡ€ΡΠΌΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΠΎΡΡ‚ΡŒ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ. Π’ этом смыслС Go Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ языки, ΠΊΠ°ΠΊ Modula, Pascal ΠΈ Oberon. И ΠΏΠΎΡ‡Ρ‚ΠΈ любой синтаксичСский элСмСнт языка соотвСтствуСт ΠΎΠ±Ρ‰Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅, поэтому ΠΌΠΎΠΆΠ΅Ρ‚ явно ΠΈ Π±Π΅Π·ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π½Π΅ зависимости ΠΎΡ‚ полоТСния Π² ΠΊΠΎΠ΄Π΅. НапримСр, Π²Ρ‹ просто Π½Π΅ смоТСтС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, которая описана Π²ΠΎ всСх Π³Π°ΠΉΠ΄Π°Ρ… ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ оформлСния ΠΊΠΎΠ΄Π° Π½Π° Β«Π‘ΠΈΒ»:

int* a, b; // Π’ Π‘ΠΈ ΠΈ C++ пСрСмСнная "a" Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, Π½ΠΎ "b" β€” Π½Π΅Ρ‚
var a, b *int; // Π’ Go ΠΎΠ±Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ указатСлями

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Go создан Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². И проявляСтся Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π²ΠΎ всём, начиная с обрамлСния Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ со стилСм Β«Π‘ΠΈΒ», нСявного объявлСния Ρ‚ΠΈΠΏΠΎΠ², отсутствия нСобходимости ΠΏΡ€ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ выраТСния ΠΈ заканчивая отсутствиСм ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Ρ… классов (создавались ΠΎΠ½ΠΈ, разумССтся, для упрощСния ΠΆΠΈΠ·Π½ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ часто становятся ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ запутывания ΠΊΠΎΠ΄Π°).

И главная идСя языка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ инструмСнтом, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π½Π΅ постоянно Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Π° Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ ΠΎΠ½ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ (эта Ρ‡Π΅Ρ€Ρ‚Π°, ΠΊΠ°ΠΊ извСстно, присуща для Ρ‚Π°ΠΊΠΈΡ… языков, ΠΊΠ°ΠΊ Β«Π‘ΠΈΒ» ΠΈ Π‘++).

БрСдства ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования

Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· самых ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‡Π΅Ρ€Ρ‚ Go. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, срСди языков ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния Β«Π³ΠΎΠ»Π°Π½Π³ΡƒΒ» просто Π½Π΅Ρ‚ Ρ€Π°Π²Π½Ρ‹Ρ… (ΠΊΡ€ΠΎΠΌΠ΅, Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ, Limbo, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ привязан ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Inferno).

Π’Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Ρ‚ΡƒΡ‚ состоит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ срСдства встроСны. Намного большСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ эти срСдства Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ модСль, которая ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ соотвСтствуСт CSP β€” Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов. Π’Π΅, ΠΊΡ‚ΠΎ Π·Π½Π°ΠΊΠΎΠΌ с Occam ΠΈ Limbo, Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ всС ΠΏΠ»ΡŽΡΡ‹ CSP, Π° ΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ, сСйчас поясним. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π³Ρ€ΠΎΠΌΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΡ‹, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ систСмы синхронизации, Π΄Π΅Π»Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ настоящСй ΠΌΡƒΠΊΠΎΠΉ ΠΈ приводящиС ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠ·Π΄Π°Π½ΠΈΡŽ многостраничных Ρ‚ΠΎΠΌΠΎΠ² ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Π΅ прилоТСния, Ρƒ нас сущСствуСт CSP. Π•Π³ΠΎ Π°Π²Ρ‚ΠΎΡ€, Π’ΠΎΠ½ΠΈ Π₯ΠΎΠ°Ρ€, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ элСгантноС ΠΈ довольно простоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π² любоС врСмя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π½ΠΈΡ‚ΡŒ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с родитСлями ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΌΠΈ нитями посрСдством ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ синхронных сообщСний.

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Go, Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС эта идСя выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
1. Боздаётся пСрСмСнная-ΠΊΠ°Π½Π°Π».
2. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ΡΡ функция, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-ΠΊΠ°Π½Π°Π» Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π² своём Ρ‚Π΅Π»Π΅ содСрТащая ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π½ΠΈΡ‚ΠΈ. Π’ ΠΊΠΎΠ½Ρ†Π΅ эта функция отправляСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π² ΠΊΠ°Π½Π°Π», Ρ‡Ρ‚ΠΎ дСлаСтся благодаря ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ.
3. Ѐункция запускаСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ посрСдством ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Β«goΒ».
4. ВыполняСтся Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΊΠ°Π½Π°Π»Π°.

Π’ΠΎ Π΅ΡΡ‚ΡŒ происходит ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ основного ΠΏΠΎΡ‚ΠΎΠΊΠ° исполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Ρ‚ΠΎ ΠΆΠ΅ самоС врСмя ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ оТиданию Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠ°Π½Π°Π»Π΅. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ исполнСния поступаСт Π² ΠΊΠ°Π½Π°Π», Π³Π΄Π΅ основной ΠΏΠΎΡ‚ΠΎΠΊ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚. Π—Π²ΡƒΡ‡ΠΈΡ‚ довольно просто, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ это выглядит Π² ΠΊΠΎΠ΄Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Один ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…ΠΎΡ€ΠΎΡˆΠΎ дСмонстрируСт ΠΌΠΎΡ‰ΡŒ Go, β€” рСализация Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°. Он выполняСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΈ ΠΏΠΎΠ΄Π°Ρ‘Ρ‚ сигналы основному ΠΏΠΎΡ‚ΠΎΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² спящий Ρ€Π΅ΠΆΠΈΠΌ. Если ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° любом ΠΈΠ· классичСских языков программирования, ΠΎΠ½ выглядСл Π±Ρ‹ довольно Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ ΠΈ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ. Однако Π² Go ΠΎΠ½ выглядит просто ΠΈ красиво:

     package main

     import "time"
     import "fmt"

     func timer(ch chan string, ns, count int) {
         for j := 1; j <= count; j++ {
             time.Sleep(int64(ns))
             if j == count {
                fmt.Printf("[timer] ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽ послСднСС сообщСниС...n")
                ch <- "стоп!"
            } else {
                fmt.Printf("[timer] ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽ...n")
                ch <- "ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ"
            }
            fmt.Printf("[timer] ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΠ»!n")
        }
     }

     func main() {
         var str string

         ch := make(chan string)
         go timer(ch, 1000000000, 10)

         for {
             fmt.Printf("[main] ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽ...n")
             str = <-ch
             if str == "стоп!" {
                 fmt.Printf("[main] ΠŸΡ€ΠΈΠ½ΡΠ» послСднСС сообщСниС, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ.n")
                 return
             } else {
                 fmt.Printf("[main] ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎ!n")
             }
         }
     }

Если Π±Ρ‹ ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ ΠΎΠ½Π° заняла Π±Ρ‹ ΠΈ вовсС 15 строк. Но наш ΠΊΠΎΠ΄ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ услоТнён ΠΏΡƒΡ‚Ρ‘ΠΌ добавлСния условных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π». Они Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для понимания ΠΎΠ±Ρ‰Π΅Π³ΠΎ синтаксиса языка Go, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° GO — ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ для изучСния языка

Взято ΠΈΠ· курса для ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… язык программирования ΠΎΡ‚ Ρ‡Π΅Π»Π° ΠΈΠ· mail.ru.
https://www.coursera.org/learn/golang-webservices-1/

ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π½Π° Ρ„Π΅Π²Ρ€Π°Π»ΡŒ 2018.

https://golang.org/ref/spec - спСцификация ΠΏΠΎ язык
https://golang.org/ref/mem - модСль памяти Π³ΠΎ. Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС Π½Π΅ Π½Π°Π΄ΠΎ, Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ
https://golang.org/doc/code.html - ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Π³ΠΎ
https://golang.org/cmd/go/
https://blog.golang.org/strings
https://blog.golang.org/slices
https://blog.golang.org/go-slices-usage-and-internals
https://github.com/golang/go/wiki - Π²ΠΈΠΊΠΈ Π³ΠΎ Π½Π° Π³ΠΈΡ‚Ρ…Π°Π±Π΅. ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ
https://blog.golang.org/go-maps-in-action
https://blog.golang.org/organizing-go-code
https://golang.org/doc/effective_go.html - основной сборник Ρ‚Π°ΠΉΠ½ΠΎΠ³ΠΎ знания, сюда Π²Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡΡŒΡ Π² ΠΏΠ΅Ρ€Π²ΠΎΠ΅ врСмя часто
https://github.com/golang/go/wiki/CodeReviewComments ΠΊΠ°ΠΊ Ρ€Π΅Π²ΡŒΡŽΠ²ΠΈΡ‚ΡŒ (ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄). ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΡŽ
https://divan.github.io/posts/avoid_gotchas/ - ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ 50 ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΎΠ² Π³ΠΎ
https://research.swtch.com/interfaces
https://research.swtch.com/godata
http://jordanorelli.com/post/42369331748/function-types-in-go-golang
https://www.devdungeon.com/content/working-files-go - Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ
http://www.golangprograms.com - ΠΌΠ½ΠΎΠ³ΠΎ how-to ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ Π² go
https://habrahabr.ru/company/mailru/blog/314804/ - 50 ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΎΠ² Π³ΠΎ. ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΡŽ. ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΠΌΡ‹ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ»ΠΈ, Π½ΠΎ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ - ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π²Π²ΠΈΠ΄Ρƒ
https://habrahabr.ru/post/306914/ - полСзная ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎ io, рСкомСндуСтся ΠΊ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΡŽ
https://habrahabr.ru/post/272383/ - постулаты go. МалСнькая ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎΠ± основными ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… языка
https://habrahabr.ru/company/mailru/blog/301036/ - Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ go
https://habrahabr.ru/post/308198/ - организация ΠΊΠΎΠ΄Π° Π² go
Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΏΠΎ Π³ΠΎ Π½Π° русском языкС:

Π―Π·Ρ‹ΠΊ программирования Go, Алан А. А. Π”ΠΎΠ½ΠΎΠ²Π°Π½, Π‘Ρ€Π°ΠΉΠ°Π½ Π£. ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½
Go Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Matt Butcher, ΠœΡΡ‚Ρ‚ Π€Π°Ρ€ΠΈΠ½Π° ΠœΡΡ‚Ρ‚
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ XXI Π²Π΅ΠΊΠ°, ΠœΠ°Ρ€ΠΊ Π‘Π°ΠΌΠΌΠ΅Ρ€Ρ„ΠΈΠ»ΡŒΠ΄
Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ упраТнСния:

https://go-tour-ru-ru.appspot.com/list - упраТнСния Π½Π° ΠΎΠ²Π»Π°Π΄Π΅Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ синтаксисом, Π½Π° случай Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° нСбольшая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ курса

ДокумСнтация

— язык программирования Go

Π―Π·Ρ‹ΠΊ программирования Go — это ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ программистам
ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ.

Go Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»Π΅Π½, Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π΅Π½, чист ΠΈ эффСктивСн. Π•Π³ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ
ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π»Π΅Π³ΠΊΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ максимально ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ многоядСрныС
ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊ сСти машин, Π° Π΅Π³ΠΎ систСма Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° обСспСчиваСт Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ
ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ построСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Go быстро компилируСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚
удобство сборки мусора ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ отраТСния Π²ΠΎ врСмя выполнСния.Π­Ρ‚ΠΎ
быстрый, статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выглядит ΠΊΠ°ΠΊ динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ,
ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык.

Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹

Установка Go

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΈ установкС Go.

Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС: Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ руководство Hello, World для Π½Π°Ρ‡Π°Π»Π°. Π£Π·Π½Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΠΊΠΎΠ΄Π΅, инструмСнтах, ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ΠΈ ​​модулях Go.

Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС: созданиС модуля

Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС с ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌΠΈ Ρ‚Π΅ΠΌΠ°ΠΌΠΈ, посвящСнными функциям, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ошибок, массивам, ΠΊΠ°Ρ€Ρ‚Π°ΠΌ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΌΡƒ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ компиляции.

НаписаниС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ простого Π²Π΅Π±-прилоТСния.

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Go

Π’ этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ простой Π½Π°Π±ΠΎΡ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Go Π²Π½ΡƒΡ‚Ρ€ΠΈ модуля,
ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ go
для сборки ΠΈ тСстирования ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Экскурсия ΠΏΠΎ Π³ΠΎ

Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Go Π² Ρ‚Ρ€Π΅Ρ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ….
ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…; Π²Ρ‚ΠΎΡ€ΠΎΠΉ обсуТдаСт
ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ интСрфСйсы; Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π² Go.ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ нСсколькими упраТнСниями, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹
научился. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·ΡΡ‚ΡŒ Ρ‚ΡƒΡ€
ΠΎΠ½Π»Π°ΠΉΠ½ ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ локально с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

$ ΠΈΠ΄ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ golang.org/x/tour
 

Π­Ρ‚ΠΎ помСстит Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» tour Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ bin вашСй Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области.

ИспользованиС и пониманиС Go

ДСйствуСт

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ совСты ΠΏΠΎ написанию понятного идиоматичСского ΠΊΠΎΠ΄Π° Go.
ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΡŽ Π»ΡŽΠ±ΠΎΠΌΡƒ Π½ΠΎΠ²ΠΎΠΌΡƒ программисту Π½Π° Go. Он дополняСт Ρ‚ΡƒΡ€ ΠΈ
ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ языка, ΠΎΠ±Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.

ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΈ IDE для Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΠΎΠ±Ρ‰Π°Π΅Ρ‚ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈ IDE с
Иди Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ.

Диагностика

ΠžΠ±ΠΎΠ±Ρ‰Π°Π΅Ρ‚ инструмСнты ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ диагностики ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Go.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями

Когда ваш ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ внСшниС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, эти ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (распространяСмыС ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ) становятся зависимостями.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ публикация ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ связанныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для использования Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ даСтся ΠΎΠ±Π·ΠΎΡ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Π Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс выпуска ΠΈ управлСния вСрсиями модуля

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для использования Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌΡƒ процСссу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ описаны высокоуровнСвыС шаги этого Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ управлСния источником

Когда Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ для использования Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ваши ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΡ€ΠΎΡ‰Π΅ Π² использовании Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, слСдуя соглашСниям ΠΎ рСпозиториях, описанным Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° обновлСния основной вСрсии

ОбновлСниС основной вСрсии ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ вашСго модуля, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ критичСскиС измСнСния ΠΈ прСдставляСт собой Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² этой Ρ‚Π΅ΠΌΠ΅.

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ модуля

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ доступным для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π²Ρ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚Π΅ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ стал Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ для инструмСнтов Go. ПослС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ модуля Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, смогут Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ модуля, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠ°ΠΊ go get.

НомСр вСрсии модуля

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ модуля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° вСрсии модуля, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ вСрсии ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ выпуска Π½ΠΎΠΌΠ΅Ρ€ вСрсии модуля ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ модуля с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ выпуска.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° распространСнныС вопросы ΠΎ Go.

Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

ΠŸΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

ДокумСнтация ΠΊ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Go.

Командная докумСнтация

ДокумСнтация ΠΊ инструмСнтам Go.

БпСцификация языка

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ спСцификация языка Go.

ΠœΠΎΠ΄ΡƒΠ»ΠΈ

Go Бсылка

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ справочноС руководство ΠΏΠΎ систСмС управлСния зависимостями Go.

Бсылка Π½Π° Ρ„Π°ΠΉΠ» go.mod

Бсылка Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ» go.mod.

МодСль памяти Go

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ условия, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСтся Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²
ΠΌΠΎΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π° Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ значСния, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ записи Π²
Ρ‚Π° ΠΆΠ΅ пСрСмСнная Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π΅.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ выпусков

Π‘Π²ΠΎΠ΄ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ выпусками Go.

Codewalks

Экскурсии ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π³ΠΎ.

Из блога Go

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠ³ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Go, содСрТащий новости ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΡ‚
ΠΊΠΎΠΌΠ°Π½Π΄Π° Π“ΠΎ ΠΈ гости.

Π―Π·Ρ‹ΠΊ
ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹
ΠœΠΎΠ΄ΡƒΠ»ΠΈ
Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

Π’ΠΈΠΊΠΈ

Go Wiki, поддСрТиваСмая сообщСством Go, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎ языкС Go, инструмСнтах ΠΈ ​​других рСсурсах.

Π‘ΠΌ. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρƒ обучСния Π² Wiki
для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… рСсурсов Go.

Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΎΠ²

Π’ΠΈΠ΄Π΅ΠΎΡ‚ΡƒΡ€ ΠΏΠΎ Go

Π’Ρ€ΠΈ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Go быстрым, ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ:
интСрфСйсы, ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ. Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΈΠ³Ρ€ΡƒΡˆΠ΅Ρ‡Π½Ρ‹ΠΉ Π²Π΅Π±-сканСр для
продСмонстрируйтС это.

Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ»Π°Π²Π½ΠΎ растСт

Одна ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Go — Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°; Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Π²Π·ΡΡ‚ΡŒ простой Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ чистым ΠΈ СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ этом выступлСнии Π­Π½Π΄Ρ€ΡŽ Π“Π΅Ρ€Ρ€Π°Π½Π΄ описываСт простой сСрвСр Β«Ρ‡Π°Ρ‚-Ρ€ΡƒΠ»Π΅Ρ‚ΠΊΠΈΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сопоставляСт ΠΏΠ°Ρ€Ρ‹ входящих TCP-соСдинСний, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°, интСрфСйсы ΠΈ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Go для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π΅Π±-интСрфСйса ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.Π₯отя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Go сохраняСт исходный Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Π΅Π³ΠΎ роста.

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Go

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ — это ΠΊΠ»ΡŽΡ‡ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСтСвых сСрвисов. ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π² Go (Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΈ ΠΊΠ°Π½Π°Π»Ρ‹) ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ простыС ΠΈ эффСктивныС срСдства выраТСния ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния. Π’ этом выступлСнии ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ слоТныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ изящно Ρ€Π΅ΡˆΠ΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простого ΠΊΠΎΠ΄Π° Go.

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Go

Π’ этом выступлСнии ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассказываСтся ΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Go, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Go.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅

ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅ сайт Go Talks ΠΈ Π²ΠΈΠΊΠΈ-страницу, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Go.

ДокумСнтация Π½Π° нСанглийском языкС

Π‘ΠΌ. ΠΠ΅Π°Π½Π³Π»ΠΈΠΉΡΠΊΡƒΡŽ страницу
Π² Wiki для Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ…
докумСнтация.

Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС ΠΏΠΎ

: Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Go

Π’ этом руководствС Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go. Π’Π΄ΠΎΠ»ΡŒ
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅:

  • УстановитС Go (Ссли Π²Ρ‹ Π΅Ρ‰Π΅ этого Π½Π΅ сдСлали).
  • ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ простой ΠΊΠΎΠ΄ Β«ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€Β».
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ go для запуска ΠΊΠΎΠ΄Π°.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ инструмСнт обнаруТСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Go, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своих собствСнных
    ΠΊΠΎΠ΄.
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²Π° внСшнСго модуля.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π”Ρ€ΡƒΠ³ΠΈΠ΅ руководства см.
Π£Ρ‡Π΅Π±Π½ΠΈΠΊΠΈ.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трСбования

  • НСкоторый ΠΎΠΏΡ‹Ρ‚ программирования. Код здСсь красивый
    просто, Π½ΠΎ это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ функциях.
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для рСдактирования вашСго ΠΊΠΎΠ΄Π°. Π›ΡŽΠ±ΠΎΠΉ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρƒ вас Π΅ΡΡ‚ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚
    Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ тСкстовых Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Go. Π‘Π°ΠΌΡ‹ΠΌΠΈ популярными ΡΠ²Π»ΡΡŽΡ‚ΡΡ
    VSCode (бСсплатно), GoLand (ΠΏΠ»Π°Ρ‚Π½ΠΎ) ΠΈ Vim (бСсплатно).
  • ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π». Go Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π»ΡŽΠ±Ρ‹ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ Π½Π°
    Linux ΠΈ Mac, Π° Ρ‚Π°ΠΊΠΆΠ΅ PowerShell ΠΈΠ»ΠΈ cmd Π² Windows.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Go

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ шаги Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ установки.

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ΄

НачнитС с Hello, World.

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² домашний ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

    Π’ Linux ΠΈΠ»ΠΈ Mac:

    CD
     

    Π’ Windows:

    cd% HOMEPATH%
     
  2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ hello для вашСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ исходного ΠΊΠΎΠ΄Π° Go.

    НапримСр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

    mkdir ΠΏΡ€ΠΈΠ²Π΅Ρ‚
    cd ΠΏΡ€ΠΈΠ²Π΅Ρ‚
     
  3. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ отслСТиваниС зависимостСй для вашСго ΠΊΠΎΠ΄Π°.

    Когда ваш ΠΊΠΎΠ΄ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, содСрТащиСся Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… модулях, Π²Ρ‹ управляСтС
    эти зависимости Ρ‡Π΅Ρ€Π΅Π· собствСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ вашСго ΠΊΠΎΠ΄Π°.Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½
    с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π°ΠΉΠ»Π° go.mod, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отслСТиваСт ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ эти ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. ΠšΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
    Ρ„Π°ΠΉΠ» go.mod остаСтся с вашим ΠΊΠΎΠ΄ΠΎΠΌ, Π² Ρ‚ΠΎΠΌ числС Π² исходном ΠΊΠΎΠ΄Π΅.
    Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

    Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ отслСТиваниС зависимостСй для вашСго ΠΊΠΎΠ΄Π° ΠΏΡƒΡ‚Π΅ΠΌ создания Ρ„Π°ΠΉΠ»Π° go.mod, запуститС
    Ρ‚ΠΎ
    go mod init ΠΊΠΎΠΌΠ°Π½Π΄Π°,
    давая Π΅ΠΌΡƒ имя модуля, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ваш ΠΊΠΎΠ΄. Имя — это
    ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ модуля. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв это Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
    мСсто, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ваш исходный ΠΊΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€
    github.com / mymodule . Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ свой ΠΌΠΎΠ΄ΡƒΠ»ΡŒ
    для использования Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ, ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ мСстополоТСниСм ΠΈΠ·
    ΠΊΠ°ΠΊΠΈΠ΅ инструмСнты Go ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ваш ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

    Для Ρ†Π΅Π»Π΅ΠΉ этого руководства просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅
    example.com/hello .

    $ go mod init example.com/hello
    go: созданиС нового go.mod: module example.com/hello
     
  4. Π’ тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ создайтС Ρ„Π°ΠΉΠ» hello.go, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ΠΊΠΎΠ΄.
  5. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ» hello.go ΠΈ сохранитС Ρ„Π°ΠΉΠ».

    основной ΠΏΠ°ΠΊΠ΅Ρ‚
    
    ΠΈΠΌΠΏΠΎΡ€Ρ‚ "FMT"
    
    func main () {
        fmt.Println ("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!")
    }
     

    Π­Ρ‚ΠΎ ваш ΠΊΠΎΠ΄ Go. Π’ этом ΠΊΠΎΠ΄Π΅ Π²Ρ‹:

    • ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ основной ΠΏΠ°ΠΊΠ΅Ρ‚ (ΠΏΠ°ΠΊΠ΅Ρ‚ — это способ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
      Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈ ΠΎΠ½ состоит ΠΈΠ· всСх Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅).
    • Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ популярныС
      FMT ΠΏΠ°ΠΊΠ΅Ρ‚,
      ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для форматирования тСкста, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Π²
      консоль.Π­Ρ‚ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ·
      стандартныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ вас Π΅ΡΡ‚ΡŒ
      ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ установили Go.
    • Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ main для Π²Ρ‹Π²ΠΎΠ΄Π° сообщСния Π½Π°
      консоль. Основная функция выполняСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ запускС
      основной ΠΏΠ°ΠΊΠ΅Ρ‚ .
  6. ЗапуститС свой ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ привСтствиС.

    $ ΠΈΠ΄ΠΈ, Π±Π΅Π³ΠΈ.
    ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!
     

    Π’
    Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ
    ΠΎΠ΄Π½Π° ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ go ΠΈ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с
    Π˜Π΄Ρ‚ΠΈ.Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…:

    $ ΠΈΠ΄ΠΈ, ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅
     

Код Π²Ρ‹Π·ΠΎΠ²Π° Π²ΠΎ внСшнСм ΠΏΠ°ΠΊΠ΅Ρ‚Π΅

Когда Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ваш ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ
ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²
ваш код.

  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ своС ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΎΠ΅ сообщСниС Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ интСрСснСС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ·
    внСшний ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

    1. ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅ pkg.go.dev ΠΈ
      ΠΈΡ‰ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ «Ρ†ΠΈΡ‚Π°Ρ‚Π°».
    2. НайдитС ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ rsc.io/quote Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… поиска.
      (Ссли Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ rsc.io/quote/v3 , ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π½Π° Π½Π΅Π³ΠΎ внимания).
    3. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ индСксом ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°
      список Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ· своСго ΠΊΠΎΠ΄Π°. Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
      ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ функция.
    4. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π²Π΅Ρ€Ρ…Ρƒ страницы ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ с Ρ†ΠΈΡ‚Π°Ρ‚ΠΎΠΉ .
      Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав rsc.io / quote ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сайт pkg.go.dev, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…
    Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своСм собствСнном ΠΊΠΎΠ΄Π΅. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽΡ‚ΡΡ Π²
    ΠΌΠΎΠ΄ΡƒΠ»ΠΈ — Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, rsc.io/quote — Π³Π΄Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.
    Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹ΠΌΠΈ вСрсиями, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ
    ΠΊΠΎΠ΄ для использования ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Ρ… вСрсий.

  2. Π’ ΠΊΠΎΠ΄Π΅ Go ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ rsc.io/quote ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ²
    ΠΊ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Go .

    ПослС добавлСния Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… строк ваш ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ
    ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

    основной ΠΏΠ°ΠΊΠ΅Ρ‚
    
    ΠΈΠΌΠΏΠΎΡ€Ρ‚ "FMT"
    
    ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ "rsc.io/quote"
    
    func main () {
        fmt.Println (quote.Go ())
    }
     
  3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½ΠΎΠ²Ρ‹Π΅ трСбования ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΈ суммы.

    Go Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ quote Π² качСствС трСбования, Π° Ρ‚Π°ΠΊΠΆΠ΅
    go.sum для использования ΠΏΡ€ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ модуля. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ см.
    АутСнтификация ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² Go
    Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ ΠΏΠΎ модулям.

    $ go mod tidy
    go: поиск модуля для ΠΏΠ°ΠΊΠ΅Ρ‚Π° rsc.io/quote
    go: нашСл rsc.io/quote в rsc.io/quote v1.5.2
     
  4. ЗапуститС свой ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ сообщСниС, созданноС Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

    $ ΠΈΠ΄ΠΈ, Π±Π΅Π³ΠΈ.
    НС ΠΎΠ±Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ, раздСляя ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΎΠ±Ρ‰Π°ΡΡΡŒ.
     

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ваш ΠΊΠΎΠ΄ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Go, , распСчатывая
    ΡƒΠΌΠ½ΠΎΠ΅ сообщСниС ΠΎ связи.

    Когда Π²Ρ‹ запустили go mod tidy , ΠΎΠ½ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»
    rsc.ΠœΠΎΠ΄ΡƒΠ»ΡŒ io / quote , содСрТащий ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚.
    По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π° послСдняя вСрсия — v1.5.2.

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ ввСдСния Π²Ρ‹ установили Go ΠΈ ΡƒΠ·Π½Π°Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·
основы. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΊΠΎΠ΄ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΎΠΌ, взглянитС Π½Π°
Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Go.

Π―Π·Ρ‹ΠΊ программирования

Go (Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅) — GeeksforGeeks

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Go — это ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ язык программирования.Он Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 2007 Π ΠΎΠ±Π΅Ρ€Ρ‚ΠΎΠΌ Π“Ρ€ΠΈΠ·Π΅ΠΌΠ΅Ρ€ΠΎΠΌ, Π ΠΎΠ±ΠΎΠΌ Пайком ΠΈ КСном Вомпсоном Π² Google, Π½ΠΎ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π² 2009 ΠΊΠ°ΠΊ язык программирования с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ с использованиСм ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для эффСктивного управлСния зависимостями. Π­Ρ‚ΠΎΡ‚ язык Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ срСду, Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ динамичСским языкам. НапримСр, Π²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠ° (y: = 0 — допустимоС объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ y Ρ‚ΠΈΠΏΠ° float).

Начиная с ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠ½Π»Π°ΠΉΠ½-срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ The Go Playground, ΠΎΡ‚Π²Π΅Ρ‚.it ΠΈ Ρ‚. Π΄., ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Go Π±Π΅Π· установки.

Для установки Go Π½Π° собствСнный ПК ΠΈΠ»ΠΈ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ Π½Π°ΠΌ понадобятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния: тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ компилятор
ВСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€: ВСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ прСдоставляСт Π²Π°ΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ , Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ исходный ΠΊΠΎΠ΄. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ список тСкстовых Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ²:

  • Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚ Windows
  • Команда рСдактирования ОБ
  • Π‘Ρ€ΠΈΡ„
  • Эпсилон
  • vm ΠΈΠ»ΠΈ vi
  • Emacs
  • VS Код

Π’ поисках компилятора Go: Дистрибутив Go поставляСтся Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ установки для FreeBSD (выпуск 8 ΠΈ Π²Ρ‹ΡˆΠ΅), Linux, Mac OS X (Snow Leopard ΠΈ Π²Ρ‹ΡˆΠ΅) ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Windows с 32-разрядной вСрсиСй (386) ΠΈ 64-разрядныС (amd64) Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ процСссоров x86 .
Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструкции ΠΏΠΎ установкС. ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» Для установки дистрибутива GO

 ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° исходного ΠΊΠΎΠ΄Π° для языка go Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ  .go  

НаписаниС ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Go:

Π’ΠΏΠ΅Ρ€Π΅Π΄

ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° основная

ΠΈΠΌΠΏΠΎΡ€Ρ‚ "Ρ„ΠΌΡ‚"

func main () {

Ρ„ΡƒΡ‚ΠΎΠ².Println ( "ЗдравствуйтС, Π²Ρ‹Ρ€ΠΎΠ΄ΠΊΠΈ" )

}

Π’Ρ‹Ρ…ΠΎΠ΄:

 ΠŸΡ€ΠΈΠ²Π΅Ρ‚, geeksforgeeks 

Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° синтаксиса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Go:

  • Π‘Ρ‚Ρ€ΠΎΠΊΠ° 1: Он содСрТит основной ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅Π΅ содСрТаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, поэтому запись являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ.
  • Π‘Ρ‚Ρ€ΠΎΠΊΠ° 2: Он содСрТит import Β«fmtΒ» , это ΠΊΠΎΠΌΠ°Π½Π΄Π° прСпроцСссора, которая сообщаСт компилятору Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅.
  • Π‘Ρ‚Ρ€ΠΎΠΊΠ° 3: основная функция , это Π½Π°Ρ‡Π°Π»ΠΎ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
  • Π‘Ρ‚Ρ€ΠΎΠΊΠ° 4: fmt.Println () — это стандартная библиотСчная функция для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ Π½Π° экран. Π’ этом случаС ΠΏΠ°ΠΊΠ΅Ρ‚ fmt ΠΏΠ΅Ρ€Π΅Π΄Π°Π» ΠΌΠ΅Ρ‚ΠΎΠ΄ Println, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для отобраТСния Π²Ρ‹Π²ΠΎΠ΄Π°.
  • ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ: ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для объяснСния ΠΊΠΎΠ΄Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² Java, C ΠΈΠ»ΠΈ C ++. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ записи ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΈΡ….ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк.

ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ:

Бинтаксис:

 // однострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ 

ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ:

Бинтаксис:

 / * многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ * / 

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’ΠΏΠ΅Ρ€Π΅Π΄

ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° основная

ΠΈΠΌΠΏΠΎΡ€Ρ‚ "Ρ„ΠΌΡ‚"

func main () {

Ρ„ΡƒΡ‚ΠΎΠ².Println ( "1 + 1 =" , 1 + 1 )

}

Π’Ρ‹Ρ…ΠΎΠ΄:

 1 + 1 = 2 

ОбъяснСниС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:
Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π²Ρ‹ΡˆΠ΅ Ρ‚Π° ΠΆΠ΅ строка ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‚Π° ΠΆΠ΅ строка ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π° ΠΆΠ΅ функция Println, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ 1st GO . На этот Ρ€Π°Π· вмСсто Π²Ρ‹Π²ΠΎΠ΄Π° строки Β«Hello, geeksforgeeksΒ» ΠΌΡ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ строку 1 + 1 =, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выраТСния 1 + 1.Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… частСй: числового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° 1 (ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏ int), ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° + (ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ слоТСниС) ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ числового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° 1.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ этот «язык GoΒ»?

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ язык Go — это ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ простоту программирования ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ языка с ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка. Он Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ соврСмСнным, с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ сСтСвых ΠΈ многоядСрных вычислСний.

Π§Ρ‚ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ Go, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ присутствуСт Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках?

  • Go пытаСтся ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ объСм Π½Π°Π±ΠΎΡ€Π° тСкста Π² ΠΎΠ±ΠΎΠΈΡ… смыслах слова.Боздавая свой Π΄ΠΈΠ·Π°ΠΉΠ½, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ бСспорядок ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.
  • НСт Ρ„ΠΎΡ€Π²Π°Ρ€Π΄Π½Ρ‹Ρ… объявлСний ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²; всС дСкларируСтся Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.
  • Π—Π°ΠΈΠΊΠ°Π½ΠΈΠ΅ сокращаСтся ΠΏΡƒΡ‚Π΅ΠΌ простого Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚ΠΈΠΏΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции объявлСния ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ : = .
  • Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅Ρ‚: Ρ‚ΠΈΠΏΡ‹ — это , ΠΈΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ свои ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅

ΠœΡ‹ наблюдали, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅ΡΡΡ‚ΡŒ Π»Π΅Ρ‚ конфигурация оборудования ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ мСняСтся ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.Π’ 2004 Π³ΠΎΠ΄Ρƒ P4 ΠΈΠΌΠ΅Π» Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ частоту 3,0 Π“Π“Ρ†, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Π² 2018 Π³ΠΎΠ΄Ρƒ, Macbook pro ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ частоту ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ (2,3 Π“Π“Ρ† ΠΏΡ€ΠΎΡ‚ΠΈΠ² 2,66 Π“Π“Ρ†). Для ускорСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ большС процСссоров, Π½ΠΎ ΠΏΡ€ΠΈ использовании большСго количСства процСссоров ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ увСличиваСтся. И ΠΈΠ·-Π·Π° этого ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ процСссоры, Π° ΠΏΡ€ΠΈ использовании ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ процСссора Ρƒ нас Π΅ΡΡ‚ΡŒ тяТСлый язык программирования, ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ большС памяти ΠΈ Π·Π°ΠΌΠ΅Π΄Π»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ нашСй систСмы. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Golang Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ вмСсто использования ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Goroutine, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, Π½ΠΎ потрСбляСт ΠΎΡ‡Π΅Π½ΡŒ мСньшС памяти.
Подобно ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅, трСбуСтся 1 ΠœΠ‘, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Goroutine потрСбляСт 2 ΠšΠ‘ памяти, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ запускаСмых goroutine.
Π˜Ρ‚Π°ΠΊ, рассмотрСнный Π²Ρ‹ΡˆΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΄Π΅Π»Π°Π΅Ρ‚ golang ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ языком, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ, ΠΊΠ°ΠΊ C ++ ΠΈ Java.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ нСдостатки Go Language

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  1. Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ — краткая, простая ΠΈ удобная для чтСния.
  2. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ — позволяСт нСскольким процСссам Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ эффСктивно.
  3. Quick Outcome — ВрСмя компиляции ΠΎΡ‡Π΅Π½ΡŒ быстроС.
  4. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° — прСдоставляСт Π±ΠΎΠ³Π°Ρ‚ΡƒΡŽ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.
  5. Π‘Π±ΠΎΡ€ΠΊΠ° мусора — это ΠΊΠ»ΡŽΡ‡Π΅Π²Π°Ρ функция go. Go выдСляСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ большой ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ распрСдСлСниСм памяти ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сниТаСт Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ Π² самых послСдних вСрсиях сборщика мусора.
  6. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ интСрфСйса ΠΈ встраивания Ρ‚ΠΈΠΏΠΎΠ².

НСдостатки:

  1. Он Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ, Π΄Π°ΠΆΠ΅ Ссли ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ вСдСтся ΠΌΠ½ΠΎΠ³ΠΎ дискуссий.
  2. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹, распространяСмыС с этим языком программирования, вСсьма ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, Π½ΠΎ Go Π½Π΅ Ρ‚Π°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π² общСпринятом смыслС.
  3. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, особСнно Π½Π°Π±ΠΎΡ€ инструмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

НСкоторыС популярныС прилоТСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π½Π° языкС Go

  • Docker: Π½Π°Π±ΠΎΡ€ инструмСнтов для развСртывания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² linux
  • Openshift: ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… вычислСний ΠΊΠ°ΠΊ услуга ΠΎΡ‚ Red Hat.
  • Kubernetes: Π‘ΡƒΠ΄ΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… процСссов развСртывания
  • Dropbox: пСрСнСс Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· своих критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с Python Π½Π° Go.
  • Netflix: для Π΄Π²ΡƒΡ… частСй ΠΈΡ… сСрвСрной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.
  • InfluxDB: — это Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, разработанная InfluxData.
  • Golang: Π‘Π°ΠΌ язык Π±Ρ‹Π» написан Π½Π° Go.

Компании ΠΏΠΎ странам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² настоящСС врСмя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ язык Go.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ языка Π³ΠΎ

  • Π”ΠΈΠ·Π°ΠΉΠ½ языка: Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ языка сдСлали ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ стрСмлСниС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ язык простым ΠΈ Π»Π΅Π³ΠΊΠΈΠΌ для понимания.Вся дСтализация находится Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… страницах, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ интСрСсныС дизайнСрскиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π±Ρ‹Π»ΠΈ приняты благодаря ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Object-Oriented Π² языкС. Π‘ этой Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния язык самоувСрСн ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ идиоматичСский способ для достиТСния Ρ†Π΅Π»Π΅ΠΉ. Он ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ наслСдованию. На языкС Π³ΠΎ Β«Π”Π΅Π»Π°ΠΉ большС с мСньшими Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈΒ» — это ΠΌΠ°Π½Ρ‚Ρ€Π°.
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ: Go ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ соврСмСнный Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² способ управлСния внСшними ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ.ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° прСдоставляСтся нСпосрСдствСнно Π² инструмСнтарии для получСния Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²Π°ΡˆΠΈΡ… собствСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π°Π±ΠΎΡ€Π° простых ΠΊΠΎΠΌΠ°Π½Π΄.
  • ΠœΠΎΡ‰Π½Π°Ρ стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°: Go ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠΎΡ‰Π½ΡƒΡŽ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, которая распространяСтся Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².
  • БтатичСский Π²Π²ΠΎΠ΄: Go — язык со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, этот компилятор Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ компиляциСй ΠΊΠΎΠ΄Π°, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ обСспСчиваСт ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ. Благодаря этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Go ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ‚ всСх Ρ‚Π΅Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ сталкиваСмся Π² динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° тСстирования: Go прСдоставляСт Π½Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ простой ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для написания ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСста ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠΎΠ΄Π° своими собствСнными тСстами. И это ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈ создании Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ.
  • ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹: Π―Π·Ρ‹ΠΊ Go ΠΏΠΎΡ…ΠΎΠΆ Π½Π° язык Java, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Благодаря своСй ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ конструкции ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΄ компилируСтся ΠΈ прСобразуСтся Π² Π΄Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ мСньший Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ зависимости.Π•Π³ΠΎ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скомпилирован Π½Π° любой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΠ»ΠΈ любом сСрвСрС ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Π² Go?

ΠŸΠ΅Ρ€Π΅Ρ„Ρ€Π°Π·ΠΈΡ€ΡƒΡ ΠΈΠ½Π΄ΠΈ-Π³Ρ€ΡƒΠΏΠΏΡƒ Cracker, ΠΌΠΈΡ€Ρƒ сСйчас Π½ΡƒΠΆΠ΅Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ язык программирования, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½Π° Π΄Ρ‹Ρ€Π° Π² Π³ΠΎΠ»ΠΎΠ²Π΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Go ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π½ΠΎ Π²Π΅Ρ€Π½ΠΎ Π·Π°Ρ‚ΠΎΠΏΠΈΠ» ΠΌΠΈΡ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠ°ΠΊ ползучая Π»ΠΎΠ·Π°, покрывая всС, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π΄ΠΎ Π½Π΅Π³ΠΎ, ΠΏΡ‹ΡˆΠ½Ρ‹ΠΌ — ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ… прСвосходным — ΠΏΠΎΠΊΡ€ΠΎΠ²ΠΎΠΌ силы программирования. Π‘ Π΅Π³ΠΎ растущСй ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ Π΅ΡΡ‚ΡŒ ряд ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Π°ΠΌ слСдуСт ΠΏΡ€ΠΈΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ гласит, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ Google Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Go, оТидая компиляции Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π˜Ρ… Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² своСм Π½Π°Π±ΠΎΡ€Π΅ инструмСнтов заставило ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΎΡΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ систСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля, создав экономичноС, срСднСС ΠΈ скомпилированноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обСспСчиваСт ΠΌΠ°ΡΡΠΎΠ²ΡƒΡŽ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ.

Запуск Go Π½Π° соврСмСнном ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ — ΠΈ Π΄Π°ΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈΠ»ΠΈ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… — ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ настоящим ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Go Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ядрах, ΠΎΠ½ создан для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ добавлСния ядСр.ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅Π³ΠΎ возмоТности многопоточности — Π² частности, Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ — ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ ΠΈ Π΄ΠΎΠ»Π³ΠΎΠΆΠ΄Π°Π½Π½Ρ‹ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ Ρ‚Ρ€ΡŽΠΊΠΎΠ².

Π‘ΠΎΠ·Π΄Π°Π½ для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ углубимся Π² подробности, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹. По сути, это ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, ΠΏΠΎΠΊΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΎΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρƒ, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π΅ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° ΠΈ тысячи Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов находятся Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’Π°ΠΉΠΌ-Π°ΡƒΡ‚ сСти? НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ, ваша Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° справится с этим, ΠΏΠΎΠΊΠ° основной Ρ†ΠΈΠΊΠ» продолТаСтся.ΠŸΠΎΠ»Π½Ρ‹ΠΉ сбой Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…? Π’Π°ΡˆΠ° Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, ΠΈ Π²Ρ‹ смоТСтС Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

ВзглянитС Π½Π° этот простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  ΠΏΠ°ΠΊΠ΅Ρ‚ основной
ΠΈΠΌΠΏΠΎΡ€Ρ‚ (
  "fmt"
  "врСмя"
)
func hello () {
  fmt.Println ("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€, Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½")
}
func main () {
  ΠΈΠ΄ΠΈ ΠΏΡ€ΠΈΠ²Π΅Ρ‚ ()
  врСмя.Π‘ΠΎΠ½ (1 * врСмя.сСкунда)
  fmt.Println ("основная функция")
}
  

Ѐункция main Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² C. Π’ этом ΠΊΠΎΠ΄Π΅ main запускаСт Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρƒ, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½ΡƒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом go , которая называСтся hello () .ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Π·Π΄Ρ€Π΅ΠΌΠ½Π΅Ρ‚, Π° Π·Π°Ρ‚Π΅ΠΌ продолТится. Если Π±Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ hello () , основная функция Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»Π° Π±Ρ‹ этого. Π“Π»Π°Π²Π½ΠΎΠ΅ — Ρ€Π°Π±ΠΎΡ‚Π° сдСлана.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° активизируСтся основная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈ запускаСтся Println . Ѐункция hello () ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅ΠΌ ΡƒΠ³ΠΎΠ΄Π½ΠΎ — Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ, записью Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ — ΠΈ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, ΠΏΠΎΠΊΠ° ΠΎΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Как ΠΈ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Π°Ρ Π»ΠΎΠ·Π°, Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π°Ρ… ΠΊΠ°ΠΊ ΠΎ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… Ρ†Π²Π΅Ρ‚ΠΊΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ отходят ΠΈ ΡƒΠΌΠΈΡ€Π°ΡŽΡ‚, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ основная Π»ΠΎΠ·Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ расти.

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это Π² дСйствии? ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ этот Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π½Π° Go Playground, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹.

Одна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эта функция стоит Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹. Для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ задания, избСгая прСпятствий. НапримСр, Ссли Π²Ρ‹ ΠΆΠ΄Π΅Ρ‚Π΅ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ тСкст, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ тСкст. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π΄Π°ΠΆΠ΅ Ссли ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы Π·Π°ΠΉΠΌΡƒΡ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ оТидалось.

Π›ΡƒΡ‡ΡˆΠ΅ всСго Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π΄Π΅ΡˆΠ΅Π²Ρ‹, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Go быстрым.

Β«Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² мСньшСС количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ОБ», — написал Навин Π Π°ΠΌΠ°Π½Π°Ρ‚Π°Π½ Π½Π° GoLangBot, ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ рСсурсС Go. Β«Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ с тысячами Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ. Если какая-Π»ΠΈΠ±ΠΎ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π² этом ΠΏΠΎΡ‚ΠΎΠΊΠ΅ блокируСтся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, оТидая Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‚ΠΎ создаСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ОБ, Π° ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ОБ. Обо всСм этом позаботится срСда выполнСния, ΠΈ ΠΌΡ‹, ΠΊΠ°ΠΊ программисты, абстрагируСмся ΠΎΡ‚ этих слоТных Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ чистый API для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠΎΠΌ.”

Π—Π°Ρ‡Π΅ΠΌ Π²Π°ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π³ΠΎ?

Π’Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π²ΠΈΠ΄Π΅Π»ΠΈ Π² послСдниС Π³ΠΎΠ΄Ρ‹ нСсколько Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΈΠ»ΠΈ Π±Π»ΠΎΠ³ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Go Π»ΡƒΡ‡ΡˆΠ΅ Perl / Python / C / ΠΈ Ρ‚. Π”. ΠœΡ‹ всС ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ использовали — Ρ‡Π΅Ρ€Ρ‚ возьми, я Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку PHP — Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Π»ΠΎΡ‡ΠΈ Π½Π° Π½Π°ΡˆΠΈΡ… сСрвСрах. Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π»? Perl. Π₯ΠΎΡ‚ΠΈΡ‚Π΅ рСгулярно ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π²ΠΈΡ‚Ρ‹? Python. Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ входящими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ тысяч ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ? Java ΠΈΠ»ΠΈ C ++ всСгда Π±Ρ‹Π»ΠΈ вашим ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Go Β«Π»ΡƒΡ‡ΡˆΠ΅Β»?

Ну, ΠΈΠ΄ΠΈ, всС это ΡƒΠΌΠ΅Π΅Ρ‚.Go Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ваш Π½Π°Π±ΠΎΡ€ инструмСнтов совмСстим для всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ Π½Π° любом ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ «просто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Β» ΠΈ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свои языки сцСнариСв Π½Π° Go, ΠΈ ваши скомпилированныС языки ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ свои дСньги, Ссли ΠΈΡ… ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ Go.

Go создан для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния сСгодня. НС всС Π½ΠΎΠ²ΠΎΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° язык программирования Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ для Ρ‚ΠΎΠΉ срСды, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· нас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ сСйчас — ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ сСрвСры, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, — ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΉΡ‚ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.Go компилируСтся практичСски Π½Π° любой машинС, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для создания ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ Π²Π΅Π±-прилоТСния ΠΈΠ»ΠΈ инструмСнта для очистки входящих Π΄Π°Π½Π½Ρ‹Ρ… для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Как ΠΈ Perl Π΄ΠΎ Π½Π΅Π³ΠΎ, Go — это ΡˆΠ²Π΅ΠΉΡ†Π°Ρ€ΡΠΊΠΈΠΉ армСйский Π½ΠΎΠΆ, Π½ΠΎ ΠΎΠ½ ΠΈΠ·Π±Π°Π²Π»Π΅Π½ ΠΎΡ‚ всСх Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов ΠΈ лишнСго мусора, накопившСгося Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… программирования Π·Π° послСдниС нСсколько дСсятилСтий.

Go прост. Как Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, я смог ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ языки ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Π·Π° Π΄ΠΎΠ»Π³ΠΈΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ΠΌΠ½Π΅ прСдставлСниС ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ½Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ, достаточно Π²Π΅Ρ€Π΅Π²ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Π΅ΡΠΈΡ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ создания Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².Π˜Π΄Ρ‚ΠΈ Π±Ρ‹Π»ΠΎ ΠΈΠ½Π°Ρ‡Π΅. Для людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π·Π½Π°ΡŽΡ‚ основы программирования ΠΈΠ»ΠΈ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Go Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… часов. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ ΡƒΠ»ΠΎΠ²ΠΊΠΈ, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Ρ‚Π°ΠΊ быстро, Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ для всСго, для Ρ‡Π΅Π³ΠΎ Π²Ρ‹ использовали ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ‚Π΅ΠΌ самым Π·Π°ΠΌΠ΅Π½ΠΈΠ² ваши сцСнарии bash, эскизы Python ΠΈ усилия Java.

Π˜Π΄Ρ‚ΠΈ быстро. ВзглянитС Π½Π° этот ΡƒΠΌΠ½Ρ‹ΠΉ список Π΄Π΅Π» Π² ΠΊΠ½ΠΈΠ³Π΅ Β«GoΒ» ΠœΠΎΡ…Π°ΠΌΠ°Π΄Π° Ѐадиля. Код довольно прост — настройтС Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… MySQL Π² Docker, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ HTML, ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ сразу Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ свСрхбыстроС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ компилируСтся ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π€Π°Π΄Ρ…ΠΈΠ» исслСдуСт, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΅ΠΌΡƒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ нравится Π³ΠΎ: ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ.

Π’ тСстС с рСгулярным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ — regex-redux — Go выполнялся Π·Π° 3,55 сСкунды, Π° Java — Π·Π° 5.58. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Go вСсила 102 строки ΠΊΠΎΠ΄Π°, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Java вСсила 70. Π”Π°, Go Π±Ρ‹Π» Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ тяТСлСС Java, Π½ΠΎ, учитывая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Go ΠΏΡ€Π΅Π²Π·ΠΎΡˆΠ΅Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎ популярности систСмный язык, становится ясно, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ТСртвуя ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ.

Go готовится Π²Π·ΡΡ‚ΡŒ Π½Π° сСбя ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ частныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ становится Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π² качСствС стандартного языка ΠΊΠ°ΠΊ для микросСрвисов, Ρ‚Π°ΠΊ ΠΈ для Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.Он ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Java ΠΈ C.

НС Π²Π΅Ρ€ΡŒΡ‚Π΅ ΠΌΠ½Π΅ Π½Π° слово. ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅ GoLang.org, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ совСты ΠΏΠΎ написанию Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, инструмСнтов ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ слуТб.

Β«Π›ΠΈΡ‡Π½ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Go — это новая Java. МногиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Jaeger, Kubernetes, Docker, InfluxDB, Serf ΠΈ Ρ‚. Π”.) Π’Π΅ΠΏΠ΅Ρ€ΡŒ написаны Π½Π° Go. Напротив, Π±ΠΎΠ»Π΅Π΅ старыС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Apache Kafka, Apache Hadoop, Apache Spark ΠΈ Ρ‚. Π”.) Написаны Π½Π° Java Β», — написал Π€Π°Π΄Ρ…ΠΈΠ».

Π“ΠΎ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Ρ‹ ΠΈΠ»ΠΈ, Π² ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΈΠ³Ρ€Ρƒ Π² Π³ΠΎ: Π½ΡƒΠΆΠ½ΠΎ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ, ΠΈ цСлая Тизнь, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ²Π»Π°Π΄Π΅Ρ‚ΡŒ ΠΈΠΌ.К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡˆΠ°Ρ…ΠΌΠ°Ρ‚, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π² Π³ΠΎ сниТаСтся с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ, ΠΈ вскорС Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ быстрыС ΠΈ яростныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· самых соврСмСнных языков ΠΌΠΈΡ€Π°.

Π’Π΅Π³ΠΈ: go, golang

ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы программирования Π½Π° Go

НСдавно ΠΌΡ‹ написали API Π½Π° Go, языкС программирования с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅Π» ΠΈΠ· Google Π² 2009 Π³ΠΎΠ΄Ρƒ. ΠœΡ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΌΡƒ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Π½Π° этом ΠΏΡƒΡ‚ΠΈ ΠΈ Π΄ΡƒΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ подСлился Π±Ρ‹.

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ языка программирования для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΡ‹ всСгда Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π΄Π°ΠΆΠ΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ языкС это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.ΠŸΡƒΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ слСдуСт ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Go, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ Go для вашСго ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π―Π·Ρ‹ΠΊ программирования Go Π·Π° послСдниС Π³ΠΎΠ΄Ρ‹ стал ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ стартап ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² своих бэкэнд-систСмах. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ.

Go — Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрый язык . ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Go скомпилирован Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ½, СстСствСнно, прСвосходит языки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ врСмя выполнСния.ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Go Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ быстро, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΉ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π». Наш API компилируСтся Π·Π° сСкунды ΠΈ создаСт исполняСмый Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 11,5 ΠœΠ‘. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° это.

Бинтаксис

Go Π½Π΅Π²Π΅Π»ΠΈΠΊ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками, ΠΈ Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ этого Π² своСй Π³ΠΎΠ»ΠΎΠ²Π΅, Π° это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° поиски Π²Π΅Ρ‰Π΅ΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ чистый ΠΈ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Go, особСнно Ρ‚Π΅, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ ΠΊ синтаксису Π² стилС C, ΠΌΠΎΠ³ΡƒΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Go ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ происходит.

Go — это язык со строгой статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π•ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ int, byte ΠΈ string. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ структуры. Как ΠΈ любой строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык, систСма Ρ‚ΠΈΠΏΠΎΠ² позволяСт компилятору ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ классы ошибок. Go Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ встроСнныС Ρ‚ΠΈΠΏΡ‹ для списков ΠΈ ΠΊΠ°Ρ€Ρ‚, ΠΈ ΠΎΠ½ΠΈ просты Π² использовании.

Go ΠΈΠΌΠ΅Π΅Ρ‚ интСрфСйсы, ΠΈ любая структура ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ интСрфСйс, просто Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² свои ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π­Ρ‚ΠΎ позволяСт ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ зависимости Π² вашСм ΠΊΠΎΠ΄Π΅. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои зависимости Π² тСстах.Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ интСрфСйсы, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ, тСстируСмый ΠΊΠΎΠ΄. Go Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ пСрвоклассныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π² Π±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ стилС.

Go ΠΈΠΌΠ΅Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Он прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ установку Π²Π΅Π±-сСрвСра, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠ΅ΠΉ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ Π±Π°ΠΉΡ‚Π°ΠΌΠΈ. БСриализация ΠΈ дСсСриализация JSON, прСдоставляСмыС стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹.Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Β«Ρ‚Π΅Π³ΠΎΠ²Β» Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ JSON рядом с полями структуры.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° тСстирования встроСна Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. НСт нСобходимости Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ зависимости. Если Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ thing.go, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ свои тСсты Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ thing_test.go ΠΈ запуститС Β«go testΒ». Go быстро Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ эти тСсты.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ статичСского Π°Π½Π°Π»ΠΈΠ·Π°

Go многочислСнны ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹. Π’ частности, это gofmt, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ваш ΠΊΠΎΠ΄ Π² соотвСтствии со стилСм, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Go. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ мноТСство ΠΌΠ½Π΅Π½ΠΈΠΉ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄.ΠœΡ‹ запускаСм gofmt, golint ΠΈ vet для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сборки, ΠΈ Ссли ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ прСдупрСТдСния, сборка Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ошибкой.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² Go Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΎ, Ρ‡Π΅ΠΌ Π² C ΠΈ C ++. ДинамичСски выдСляСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ сборщиком мусора. Go Π΄Π΅Π»Π°Π΅Ρ‚ использованиС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π±ΠΎΠ»Π΅Π΅ бСзопасным, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с указатСлями. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π₯отя ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚ простым, Go Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. ΠŸΠΎΡ‡Ρ‚ΠΈ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Β«Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½ΠΎΠΉΒ», ΠΈ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с Π½ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· Β«ΠΊΠ°Π½Π°Π»Β».Β«Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π±ΠΎΠ»Π΅Π΅ слоТныС ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Как ΠΌΡ‹ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅, Go — Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ язык. Π£ Π½Π΅Π³ΠΎ чистый синтаксис. Он ΠΈΠΌΠ΅Π΅Ρ‚ быстроС врСмя выполнСния. Π’ этом ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ. Однако язык программирования — это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ синтаксис. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, слон Π² ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅. Π’ Go Π½Π΅Ρ‚ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… шаблонов. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ с Ρ‚Π°ΠΊΠΈΡ… языков, ΠΊΠ°ΠΊ Java, это ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅ прСпятствиС. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ сниТСниС уровня ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования Π² вашСм ΠΊΠΎΠ΄Π΅. Π₯отя Π² Go Π΅ΡΡ‚ΡŒ пСрвоклассныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ Β«mapΒ», Β«reduceΒ» ΠΈΠ»ΠΈ Β«filterΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.Π•ΡΡ‚ΡŒ способы ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этим, Π½ΠΎ всС ΠΎΠ½ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ написания большСго количСства ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ сниТаСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ€Π΅ΠΌΠΎΠ½Ρ‚ΠΎΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒ.

Π₯отя Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ интСрфСйсов — это Ρ…ΠΎΡ€ΠΎΡˆΠΎ, структуры Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ интСрфСйсы нСявно, Π° Π½Π΅ явно. Π­Ρ‚ΠΎ заявлСно ΠΊΠ°ΠΊ сильная сторона Go, Π½ΠΎ ΠΌΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ, глядя Π½Π° структуру, Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π»ΠΈ ΠΎΠ½Π° интСрфСйс ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ это, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π²ΡˆΠΈΡΡŒ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° нСбольшая, Π½ΠΎ Π½Π΅ ΠΎΡ‚ срСднСго Π΄ΠΎ большого.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Go. Наш API интСгрируСтся с Contentful, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Go SDK. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ (ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ!) ВОННУ ΠΊΠΎΠ΄Π° для запроса ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Contentful. Нам Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° ΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŽΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Elasticsearch. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ Go SDK, прСдоставляСмыС поставщиками, Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΊΠ°ΠΊ ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΈ Π½Π° Java, Ruby ΠΈΠ»ΠΈ JavaScript.

БообщСство Go ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСвосприимчивым ΠΊ прСдлоТСниям. Рассмотрим эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ GitHub для golint: https: // github.com / golang / lint / issues / 65. ΠšΡ‚ΠΎ-Ρ‚ΠΎ запросил Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для golint сбой сборки ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ (Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ Π² нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅!). Π‘ΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΠ» эту идСю. ДостаточноС количСство людСй ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³ΠΎΠ΄Π° спустя ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

БообщСство Go, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Π»ΡŽΠ±ΠΈΡ‚ Π²Π΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ. Π₯отя HTTP-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠ΅, ΠΎΠ½Π° Π½Π΅ обСспСчиваСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡƒΡ‚ΠΈ, очистки ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Π²ΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… сквозных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π² Π²Π΅Π±-прилоТСниях.Π£ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ruby Π΅ΡΡ‚ΡŒ Rails, Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Java Π΅ΡΡ‚ΡŒ Spring MVC, Π° Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Python Π΅ΡΡ‚ΡŒ Django. Но ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Go ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ². Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ всС Π΅Ρ‰Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Много ΠΈΡ…! Но ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ откаТутся послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π½Π°Ρ‡Π°Π»ΠΈ с Π½ΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π”ΠΎΠ»Π³ΠΎΠ΅ врСмя Π² Go Π½Π΅ Π±Ρ‹Π»ΠΎ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². ПослС ΠΌΠ½ΠΎΠ³ΠΈΡ… Π»Π΅Ρ‚ ΡƒΠΏΡ€Π°ΡˆΠΈΠ²Π°Π½ΠΈΡ сообщСства ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Go Π½Π΅Π΄Π°Π²Π½ΠΎ выпустил godep. Π”ΠΎ этого ΠΏΡ€ΠΎΠ±Π΅Π» восполняли ΠΌΠ½ΠΎΠ³ΠΈΠ΅ инструмСнты.Π’ нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΡ‡Π΅Π½ΡŒ способного Π³ΡƒΠ±Π΅Ρ€Π½Π°Ρ‚ΠΎΡ€Π°. Но это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сообщСство Ρ€Π°Π·Π΄Ρ€ΠΎΠ±Π»Π΅Π½ΠΎ, ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ сильно ΡΠ±ΠΈΡ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΠ»ΠΎΡ…ΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… с Go. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, практичСски всС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ поддСрТиваСтся рСпозиториями Git, история ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ это с Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Maven Central, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ зависит ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Иногда Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ машинС. Π’Ρ‹ отправляСтС ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π±Π°ΠΉΡ‚Ρ‹. Π’Ρ‹ управляСтС тысячами ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΡƒΡŽ систСму ΠΈΠ»ΠΈ ΡƒΠ·Π΅Π» Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π±Π»ΠΎΠΊΠΎΠ². Π’ Ρ‚Π°ΠΊΠΈΡ… ситуациях Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ, скорСС всСго, вас Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚. Π’Ρ‹ слишком заняты Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΆΠ°Ρ‚ΡŒ ΠΈΠ· крСмния ΠΊΠ°ΠΆΠ΄ΡƒΡŽ наносСкунду ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Однако часто приходится Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ…Ρ€ΡƒΠΏΠΊΠΈΡ… Π»ΡŽΠ΄ΡΡ…, основанных Π½Π° ΡƒΠ³Π»Π΅Ρ€ΠΎΠ΄Π΅. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ бизнСс-Π΄ΠΎΠΌΠ΅Π½Π°: ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹, сотрудники, ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹, Π·Π°ΠΊΠ°Π·Ρ‹. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с коллСкциями этих сущностСй Π΄ΠΎΠΌΠ΅Π½Π°, ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ эту бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π»Π΅Ρ‚.Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ трСбованиями, ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π²Ρ‡Π΅Ρ€Π°. Π’ Ρ‚Π°ΠΊΠΈΡ… ситуациях ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Go — это язык программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ машинноС врСмя Π²Ρ‹ΡˆΠ΅ чСловСчСского. Иногда ваш Π΄ΠΎΠΌΠ΅Π½ — это машина, ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ Ρ‚Π°ΠΊΠΈΡ… ситуациях Go ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ C ΠΈΠ»ΠΈ C ++. Однако, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡƒΠ·ΠΊΠΈΠ΅ мСста ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ свои Π΄Π°Π½Π½Ρ‹Π΅.

Π£Ρ‡Ρ‚ΠΈΡ‚Π΅ это практичСскоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π΅ΡˆΠ°Ρ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈ Go:

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π±Π°ΠΉΡ‚Π°ΠΌΠΈ, Go ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ.

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Go ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ.

ΠœΠΎΠΆΠ΅Ρ‚, ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ это измСнится. Π―Π·Ρ‹ΠΊ ΠΈ сообщСство Π³ΠΎ всС Π΅Ρ‰Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ»ΠΎΠ΄Ρ‹. Они ΠΌΠΎΠ³Π»ΠΈ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒ нас ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ, ΠΈΠ»ΠΈ популярная Π²Π΅Π±-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΎΠ³Π»Π° Π±Ρ‹ ΡΡ‚Π°Ρ‚ΡŒ явным ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚Π΅Π»Π΅ΠΌ. Однако ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… языков с повсСмСстной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ, Π·Ρ€Π΅Π»Ρ‹ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ зависимостями ΠΈ Π°ΠΊΡ†Π΅Π½Ρ‚ΠΎΠΌ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ бизнСс-областСй.

Для Ρ‡Π΅Π³ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ΅Π½ язык Google Go (Π³ΠΎΠ»Π°Π½Π³)?

Π—Π° Π΄Π΅Π²ΡΡ‚ΡŒ с лишним Π»Π΅Ρ‚ сущСствования язык Google Go, Ρ‚Π°ΠΊΠΆΠ΅ извСстный ΠΊΠ°ΠΊ Golang, с вСрсиСй 1.13 ΠΏΠΎ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° ΡΠ΅Π½Ρ‚ΡΠ±Ρ€ΡŒ 2019 Π³ΠΎΠ΄Π°, прСвратился ΠΈΠ· Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚ΡΡ‚Π²Π° для Π°Π»ΡŒΡ„Π°-Π³ΠΈΠΊΠΎΠ² Π² ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ Π² боях язык программирования, стоящий Π·Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Go Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΊ Docker ΠΈ Kubernetes? ΠšΠ°ΠΊΠΎΠ²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ характСристики Go, Ρ‡Π΅ΠΌ ΠΎΠ½ отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования ΠΈ для ΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚? Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Go, ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования, упущСния ΠΈ ограничСния языка, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ развития Go.

Go — малСнький ΠΈ простой язык

Go, ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚, Golang, Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ сотрудниками Google, Π² основном Π΄Π°Π²Π½ΠΈΠΌ Π³ΡƒΡ€Ρƒ Unix ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΌΡΡ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠΌ Google Π ΠΎΠ±ΠΎΠΌ Пайком, Π½ΠΎ, строго говоря, это Π½Π΅ Β«ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ GoogleΒ». Π‘ΠΊΠΎΡ€Π΅Π΅, Go разрабатываСтся ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ΄ руководством сообщСства, возглавляСмый руководством, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π²Π΅Ρ€Π΄ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Go ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ язык.

Go прост Π² освоСнии, с Π½ΠΈΠΌ Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ.Go Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ большого Π½Π°Π±ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, особСнно ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Π°ΠΊΠΈΠΌΠΈ языками, ΠΊΠ°ΠΊ C ++. Go ΠΏΠΎ своСму синтаксису Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ C, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простым Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ для Π΄Π°Π²Π½ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² C. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Go, особСнно Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования, восходят ΠΊ Ρ‚Π°ΠΊΠΈΠΌ языкам, ΠΊΠ°ΠΊ Erlang.

Как язык C-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для создания ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ кроссплатформСнных ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ всСх Π²ΠΈΠ΄ΠΎΠ², Go ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с Java. И Π² качСствС срСдства обСспСчСния быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ провСсти ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Go ΠΈ Python, хотя Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‡Π΅ΠΌ сходства.

Π’ языкС Go найдСтся Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ

Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Go Go описываСтся ΠΊΠ°ΠΊ «быстрый, статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выглядит ΠΊΠ°ΠΊ динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык». Π”Π°ΠΆΠ΅ большая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° Go компилируСтся Π·Π° считанныС сСкунды. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Go ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов, связанных с Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Π² стилС C.

Go ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Тизнь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ нСсколькими способами:

  • Удобство. Go ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ со скриптовыми языками, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Python, ΠΏΠΎ Π΅Π³ΠΎ способности ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΠ΅ потрСбности программирования.НСкоторыС ΠΈΠ· этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ встроСны Π² сам язык, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹Β» для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ повСдСния, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности доступны Π² стандартных ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Go, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² HTTP-ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Go. Как ΠΈ Python, Go прСдоставляСт возмоТности автоматичСского управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ сборку мусора.
    Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ языков сцСнариСв, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Python, ΠΊΠΎΠ΄ Go компилируСтся Π² быстро Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ собствСнный Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». И Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ C ΠΈΠ»ΠΈ C ++, Go компилируСтся Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ быстро — достаточно быстро, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π° с Go Π±Ρ‹Π»Π° большС ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с языком сцСнариСв, Ρ‡Π΅ΠΌ с ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком.ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, систСма сборки Go ΠΌΠ΅Π½Π΅Π΅ слоТна, Ρ‡Π΅ΠΌ Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков. Для создания ΠΈ запуска ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Go трСбуСтся нСсколько шагов ΠΈ нСбольшая бухгалтСрия.
  • Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Go Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΈ Π½Π° C, Π½ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ€Π°Π·Π½ΠΈΡ†Π° Π² скорости Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Go Π½Π΅ уступаСт C для ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡ ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки, извСстныС своСй ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, JavaScript, Python ΠΈ Ruby).
  • ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ. Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, созданныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π°Π±ΠΎΡ€Π° инструмСнтов Go, ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎ, Π±Π΅Π· Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Набор инструмСнтов Go доступСн для самых Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для компиляции Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ….
  • ВзаимодСйствиС. Go обСспСчиваСт всС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π±Π΅Π· ΡƒΡ‰Π΅Ρ€Π±Π° для доступа ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΉ систСмС. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Go ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с внСшними Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ C ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ собствСнныС систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹. Π’ Docker, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Go взаимодСйствуСт с Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ функциями Linux, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ ΠΈ пространствами ΠΈΠΌΠ΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠΉ ΠΌΠ°Π³ΠΈΠ΅ΠΉ.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°. Набор инструмСнтов Go находится Π² свободном доступС Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Linux, MacOS, Windows ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Docker. Go ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ популярныС дистрибутивы Linux, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Red Hat Enterprise Linux ΠΈ Fedora, Ρ‡Ρ‚ΠΎ нСсколько ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ исходного ΠΊΠΎΠ΄Π° Go Π½Π° этих ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Go Ρ‚Π°ΠΊΠΆΠ΅ сильна Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… сторонних срСдах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΎΡ‚ Microsoft Visual Studio Code Π΄ΠΎ ActiveState Komodo IDE.

ΠšΡƒΠ΄Π° ΠΏΠΎΠΉΡ‚ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ язык

Ни ΠΎΠ΄ΠΈΠ½ язык Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ языки подходят для большСго количСства Ρ€Π°Π±ΠΎΡ‚, Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Go Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:

  • РаспрСдСлСнныС сСтСвыС сСрвисы. Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ прилоТСния ΠΆΠΈΠ²ΡƒΡ‚ ΠΈ ΡƒΠΌΠΈΡ€Π°ΡŽΡ‚ ΠΈΠ·-Π·Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°, ΠΈ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Go — Π² основном Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΈ ΠΊΠ°Π½Π°Π»Ρ‹ — Ρ…ΠΎΡ€ΠΎΡˆΠΎ подходят для Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Go ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для сСтСй, распрСдСлСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… сСрвисов: API-интСрфСйсы, Π²Π΅Π±-сСрвСры, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅.
  • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π±Π°Π·Π΅ ΠΎΠ±Π»Π°ΠΊΠ°.ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ΠΈ сСтСвыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Go, Π° Ρ‚Π°ΠΊΠΆΠ΅ высокая ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ пСрСносимости Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π³ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ подходящим для создания ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ЀактичСски, Go использовался для создания Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΡ€Π°Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°ΠΌΠ½Π΅ΠΉ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… вычислСний, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Docker, Kubernetes ΠΈ Istio.
  • Π—Π°ΠΌΠ΅Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ инфраструктуры. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ зависим для инфраструктуры Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°, устарСваСт ΠΈ ΠΏΡ€ΠΎΠ½ΠΈΠ·Π°Π½Π° эксплойтами. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ Π² Go Π΄Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ прСимущСств — Π»ΡƒΡ‡ΡˆΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ памяти, Π±ΠΎΠ»Π΅Π΅ простоС кроссплатформСнноС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ Ρ‡ΠΈΡΡ‚ΡƒΡŽ Π±Π°Π·Ρƒ ΠΊΠΎΠ΄Π° для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ обслуТивания.Новый SSH-сСрвСр ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Teleport ΠΈ новая вСрсия Network Time Protocol ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π½Π° Go ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ΡΡ Π² качСствС Π·Π°ΠΌΠ΅Π½Ρ‹ своих Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π°Π½Π°Π»ΠΎΠ³ΠΎΠ².
  • Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Π΅ инструмСнты. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Go ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ внСшними зависимостями. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… идСально подходящими для создания ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… инструмСнтов, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ быстро ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ‹ для распространСния.

языковыС ограничСния Go

Π‘Π°ΠΌΠΎΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Go Π²Ρ‹Π·Ρ‹Π²Π°Π» ΠΊΠ°ΠΊ ΠΏΠΎΡ…Π²Π°Π»Ρƒ, Ρ‚Π°ΠΊ ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒ.Go спроСктирован Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ малСньким ΠΈ Π»Π΅Π³ΠΊΠΈΠΌ для понимания, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ явлСниСм для Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, просто Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ нСдоступны Π² Go.

Одной ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Go Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ, ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ языком Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΈΡ… добавлСния Π½Π° Ρ‚ΠΎΠΌ основании, Ρ‡Ρ‚ΠΎ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ поставят ΠΏΠΎΠ΄ ΡƒΠ³Ρ€ΠΎΠ·Ρƒ простоту языка.Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ всС Π΅Ρ‰Π΅ Π½Π΅ тСрпится ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π² Go ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ. Π‘Ρ‹Π»ΠΎ Π²Ρ‹Π΄Π²ΠΈΠ½ΡƒΡ‚ΠΎ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΎΠ² Π² Go, Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ высСчСно Π² ΠΊΠ°ΠΌΠ½Π΅.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ нСдостатком Go являСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ сгСнСрированных Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Go ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ статичСски, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π²ΠΎ врСмя выполнСния Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ процСсс сборки ΠΈ развСртывания, Π½ΠΎ Π·Π° счСт простого Β«Hello, world!Β» вСсом ΠΎΠΊΠΎΠ»ΠΎ 1.5 ΠœΠ‘ Π² 64-Π±ΠΈΡ‚Π½ΠΎΠΉ Windows. Команда Go Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° этих Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ выпуском. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠ°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Go с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сТатия ΠΈΠ»ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ удалСния ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Go. Π­Ρ‚ΠΎΡ‚ послСдний Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ для Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… распрСдСлСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‡Π΅ΠΌ для ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΈΠ»ΠΈ сСтСвых слуТб, Π³Π΄Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² случаС сбоя слуТбы.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° рСкламируСмая функция Go, автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ нСдостаток, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сборка мусора Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.По замыслу Go Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€ΡƒΡ‡Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΈ сборку мусора Π² Go ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΏΠ»ΠΎΡ…ΠΎ справляСтся с Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌΠΈ Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… прилоТСниях. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Go 1.8 содСрТит мноТСство ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ сборкС мусора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‚ врСмя Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Go Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€ΡƒΡ‡Π½ΠΎΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ C ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стороннСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

ΠšΡƒΠ»ΡŒΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, связанного с созданиСм Π±ΠΎΠ³Π°Ρ‚ΠΎΠ³ΠΎ графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Go, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ прилоТСния для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², всС Π΅Ρ‰Π΅ Ρ€Π°Π·Ρ€ΠΎΠ·Π½Π΅Π½Π°.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Go ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой инструмСнты ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈΠ»ΠΈ сСтСвыС слуТбы. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π°Π΄ созданиСм Π±ΠΎΠ³Π°Ρ‚ΠΎΠ³ΠΎ графичСского интСрфСйса для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Go. Π•ΡΡ‚ΡŒ привязки для Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² GTK ΠΈ GTK3. Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для прСдоставлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, хотя ΠΎΠ½ΠΈ основаны Π½Π° привязках C ΠΈ Π½Π΅ написаны Π½Π° чистом Go. А ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Windows ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π³ΡƒΠ»ΡΡ‚ΡŒ. Но Π² этой сфСрС Π½Π΅ появилось явного побСдитСля ΠΈΠ»ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ долгосрочной ставки, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Google ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ графичСского интСрфСйса, ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ»Π°Π½.ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Go ΠΏΠΎ своСй конструкции Π½Π΅ зависит ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, маловСроятно, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π½ΠΈΡ… станСт Ρ‡Π°ΡΡ‚ΡŒΡŽ стандартного Π½Π°Π±ΠΎΡ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Π₯отя Go ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с собствСнными систСмными функциями, ΠΎΠ½ Π½Π΅ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для создания систСмных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ядра ΠΈΠ»ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ устройств, ΠΈΠ»ΠΈ встроСнных систСм. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², срСда выполнСния Go ΠΈ сборщик мусора для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Go зависят ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ОБ. (Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, заинтСрСсованныС Π² ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΌ языкС для Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ язык Rust.)

Π―Π·Ρ‹ΠΊΠΎΠ²Ρ‹Π΅ Ρ„ΡŒΡŽΡ‡Π΅Ρ€ΡΡ‹ Go

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ этап Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Go Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² большСй стСпСни обусловлСн ТСланиями ΠΈ потрСбностями Π΅Π³ΠΎ Π±Π°Π·Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΠ³Π΄Π° спСциалисты Go ΠΌΠ΅Π½ΡΡŽΡ‚ язык, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΡΠΏΠΎΡΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΊ этой Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π° Π½Π΅ просто Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ своим упрямым ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Go ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ для Π½Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°Π»ΠΈΡΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ.

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Golang хотят этого. ΠžΠΏΡ€ΠΎΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Go Π² 2018 Π³ΠΎΠ΄Ρƒ помСстил Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ Π² Ρ‚Ρ€ΠΎΠΉΠΊΡƒ основных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π° ΠΏΡƒΡ‚ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ внСдрСния Go, наряду с ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ΠΌ зависимостСй ΠΈ управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ.И ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΎΠ² Π½Π° GitHub остаСтся Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Go 2.x. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ измСнСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Go Π·Π°Π½ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ мСсто Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π³Π΄Π΅ Π² настоящСС врСмя Π±Π΅Π·Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ Π³ΠΎΡΠΏΠΎΠ΄ΡΡ‚Π²ΡƒΡŽΡ‚ Java, JavaScript ΠΈ Python.

Π”Π°ΠΆΠ΅ Π±Π΅Π· ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ использования Go для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² восстановлСния инфраструктуры Π² соотвСтствии с описанными Π²Ρ‹ΡˆΠ΅ Π·Π°ΠΌΠ΅Π½Π°ΠΌΠΈ SSH ΠΈ NTP, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… многоязычных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Go Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ распространСниС.ActiveGo ΠΎΡ‚ ActiveState прСдоставляСт коммСрчСски ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ языка Go, Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ LLVM ΠΈ gccgo ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ свободно Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Go с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Π² Π²ΠΈΠ΄Π΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² инструмСнтов.

НаконСц, Go Ρ‚Π°ΠΊΠΆΠ΅ послуТил Π±Π°Π·ΠΎΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹Ρ… языков, хотя Π΄Π²Π° Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° пСрСстали Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ. Одним ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π±Ρ‹Π» язык Have, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π» синтаксис Go, ΠΏΠΎ-своСму Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΈ пСрСнСсСн Π½Π° Go для облСгчСния выполнСния.Π”Ρ€ΡƒΠ³ΠΎΠΉ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Oden, использовал ассСмблСр ΠΈ Π½Π°Π±ΠΎΡ€ инструмСнтов Go для компиляции Π½Π΅Π΄Π°Π²Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‡Π΅Ρ€ΠΏΠ°Π» Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… языков, ΠΊΠ°ΠΊ Lisp ΠΈ Haskell.

Π­Ρ‚ΠΎΡ‚ послСдний Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ любая ИВ-инновация становится поистинС Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ — ΠΊΠΎΠ³Π΄Π° люди Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ Π΅Π΅ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Ρ‹Π²Π°ΡŽΡ‚, находя ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ. Π‘ΡƒΠ΄ΡƒΡ‰Π΅Π΅ языка Go ΠΊΠ°ΠΊ хакСрского ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ начинаСтся. Но Π΅Π³ΠΎ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ ΠΊΠ°ΠΊ основного языка программирования ΡƒΠΆΠ΅ обСспСчСно, особСнно Π² ΠΎΠ±Π»Π°ΠΊΠ΅, Π³Π΄Π΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ простота Go ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ инфраструктуры, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π² долгосрочной пСрспСктивС.

Copyright Β© 2019 IDG Communications, Inc.

Π£Ρ‡Π΅Π±Π½ΠΈΠΊΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° Python

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования Go

ЗдравствуйтС ΠΈ Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° языкС Go, язык . Π’ этой сСрии ΠΌΡ‹ рассмотрим настройку ΠΈ основы практичСского использования Go. Go — это язык программирования, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ основы, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ фактичСского примСнСния Π΅Π³ΠΎ ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅.Из-Π·Π° этого ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈ сразу ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ эти ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ этих ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΡ‡Π΅ΠΌΡƒ нас ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ язык программирования Go? Π§Ρ‚ΠΎ касаСтся мСня, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я Π² основном ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽ Π½Π° Python, я ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с Ρ‚Π°ΠΊΠΈΠΌ языком высокого уровня. Go Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Google для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ стоящих ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌΠΈ Π·Π°Π΄Π°Ρ‡ ΠΈ создан с нуля. Π’Π°ΠΊΠΎΠΉ язык, ΠΊΠ°ΠΊ Python, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡, Π½ΠΎ ΠΈΠ·-Π·Π° GIL ΠΈ динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.Если Π²Ρ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Python Π΄ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² экзСмпляров, Π²Ρ‹ ΠΏΠ»Π°Ρ‚ΠΈΡ‚Π΅ довольно Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Ρ†Π΅Π½Ρƒ Π·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ссли Π±Ρ‹ Π²Ρ‹ написали Ρ‚Ρƒ ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C ++. Однако ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ C ++ Π½Π΅ самый приятный язык для программирования ΠΈ Π½Π΅ самый ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для изучСния.

Go — это язык со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Python), ΠΈ Π² Π½Π΅ΠΌ с самого Π½Π°Ρ‡Π°Π»Π° Π·Π°Π»ΠΎΠΆΠ΅Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ. Π›ΠΈΡ‡Π½ΠΎ мСня большС всСго интСрСсуСт Go для Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½ΠΎ я Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для мноТСства Π·Π°Π΄Π°Ρ‡ большого объСма ΠΈ просто для систСм Π² Ρ†Π΅Π»ΠΎΠΌ.Мало Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Go ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, сам язык Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· Π²ΠΎΡ€ΠΎΡ‚ с ΠΏΠΎΠ»Π½ΠΎΠΉ Π²Π΅Π±-ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ, встроСнным Π²Π΅Π±-сСрвСром ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΡƒΠΆΠ΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ Π²Π΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ.

Для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ понадобится Go. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ сюда . Π’ Windows Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ простой установщик: .pkg для Mac ΠΈΠ»ΠΈ tarball для Linux. Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² Linux, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Go Π² свой ΠΏΡƒΡ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΠΎ:

 Π½Π°Π½ΠΎ ~ /. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ 

А Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°:

 экспорт ПУВЬ = $ ПУВЬ: / usr / local / go / bin 

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅, Π²Ρ‹ΠΉΠ΄ΠΈΡ‚Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

 $ источник ~ /.ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ 

ΠŸΡ€ΠΎΡΡ‚Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Go Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° .go . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ», ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. Π― Π»ΠΈΡ‡Π½ΠΎ Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Sublime Text . Π’ Windows это простой установщик .exe , Π² Linux Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Sublime с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

 $ sudo add-apt-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ppa: webupd8team / sublime-text-3
$ sudo apt-get update
$ sudo apt-get install Π²ΠΎΠ·Π²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΉ тСкст-установщик 

Для запуска Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» terminal / cmd.exe ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ синтаксис: , запуститС YOURFILE.go

Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Go, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, всС Π»ΠΈ Ρƒ нас настроСно ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅:

gointro.go

 основной ΠΏΠ°ΠΊΠ΅Ρ‚

ΠΈΠΌΠΏΠΎΡ€Ρ‚ "FMT"

func main () {
fmt.Println ("Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ!")
} 

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ это, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ , Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ gointro.go , ΠΈ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ:

 Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² Go! 

Если Π²Ρ‹ зашли Ρ‚Π°ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ, поздравляСм с вашСй ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π³ΠΎ! Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ рассмотрим, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ каТдая строка.Π― сдСлаю это, ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π² Π²Ρ‹ΡˆΠ΅ ΠΈΠ»ΠΈ рядом с строками, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚. Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, это способы написания Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π² вашСм ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ фактичСский ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ запускС вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Go однострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ // , Π° для многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ / * ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ * /

.

 package main // ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ go состоят ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с main

// ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ / ΠΏΠ°ΠΊΠ΅Ρ‚. Π’ этом случаС ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ fmt, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ
// стандартныС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ строки Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ· C
ΠΈΠΌΠΏΠΎΡ€Ρ‚ "FMT"

// синтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Go.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *