golang язык программирования для Ρ‡Π΅Π³ΠΎ

Π―Π·Ρ‹ΠΊ Go для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ

ЦСль этой ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ языкС программирования Go (Golang) Ρ‚Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ смотрят Π² сторону этого языка, Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈΡΡŒ Π²Π·ΡΡ‚ΡŒΡΡ Π·Π° Π΅Π³ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅. Рассказ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставляСт ΠΈΠ· сСбя RESTful API Π²Π΅Π±-сСрвис.

ΠŸΠ΅Ρ€Π΅Π΄ΠΎ ΠΌΠ½ΠΎΠΉ стояла Π·Π°Π΄Π°Ρ‡Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ бэкэнд ΠΊ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΠΎΠΌΡƒ сСрвису. Π‘ΡƒΡ‚ΡŒ сСрвиса довольно проста. МобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ посты ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, находящихся рядом с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ мСстополоТСниСм. На посты ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ свои ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠΆΠ΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ своСобразный Π³Π΅ΠΎ-Ρ„ΠΎΡ€ΡƒΠΌ.

Π”Π°Π²Π½ΠΎ Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ язык Go для сколь Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π’Ρ‹Π±ΠΎΡ€ Π±Ρ‹Π» ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½, Π±Π»Π°Π³ΠΎ Ρ‡Ρ‚ΠΎ этот язык ΠΊΠ°ΠΊ нСльзя Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ прСимущСства языка Go:

ВсС эти, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ особСнности ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ язык срСди ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…. Π­Ρ‚ΠΎ достойный ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ язык довольно просто.

Π˜Ρ‚Π°ΠΊ, вСрнСмся ΠΊ нашСй Π·Π°Π΄Π°Ρ‡Π΅. Π₯ΠΎΡ‚ΡŒ язык ΠΈ Π½Π΅ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° структуру ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ я Ρ€Π΅ΡˆΠΈΠ» ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ MVC. ΠŸΡ€Π°Π²Π΄Π° View рСализовываСтся Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π’ ΠΌΠΎΠ΅ΠΌ случаС это Π±Ρ‹Π» AngularJS, Π² пСрспСктивС β€” Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π—Π΄Π΅ΡΡŒ я расскаТу лишь ΠΎΠ± API Π½Π° сторонС сСрвиса.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² Go раздСляСтся Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (package), Ρ‡Ρ‚ΠΎ указываСтся Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Имя ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находятся Ρ„Π°ΠΉΠ»Ρ‹, входящиС Π² ΠΏΠ°ΠΊΠ΅Ρ‚. Π’Π°ΠΊ ΠΆΠ΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ main с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ main(). Он Ρƒ мСня находится Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ прилоТСния loctalk.go. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρƒ мСня ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ 5 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²: conf, controllers, models, utils, main.
Π‘ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ΅ содСрТаниС Ρ„Π°ΠΉΠ»ΠΎΠ², Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для понимания.

ΠŸΠ°ΠΊΠ΅Ρ‚ conf содСрТит константы ΠΈ настройки сайта.

Π”ΡƒΠΌΠ°ΡŽ, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚ Π½Π΅Ρ‡Π΅Π³ΠΎ. Ѐункция init() вызываСтся Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° main(). Π˜Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ….

Π’ самом Π²Π΅Ρ€Ρ…Ρƒ опрСдСляСтся имя ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ список ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Martini. Он добавляСт Π»Π΅Π³ΠΊΡƒΡŽ прослойку для быстрого ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ создания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ импортируСтся этот ΠΏΠ°ΠΊΠ΅Ρ‚. НуТно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½ Π±Ρ‹Π» взят. А Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, достаточно Π² консоли Π½Π°Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ go get github.com/go-martini/martini

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ создаСм экзСмпляр Martini, настраиваСм ΠΈ запускаСм Π΅Π³ΠΎ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π·Π½Π°ΠΊ Β« := Β». Π­Ρ‚ΠΎ сокращСнный синтаксис, ΠΎΠ½ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚: ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅. НапримСр, написав a := Β«helloΒ», ΠΌΡ‹ создадим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ a Ρ‚ΠΈΠΏΠ° string ΠΈ присвоим Π΅ΠΉ строку Β«helloΒ».

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ m Π² нашСм случаС ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ *ClassicMartini, ΠΈΠΌΠ΅Π½Π½ΠΎ это Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ martini.Classic(). * ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚. Π΅. пСрСдаСтся Π½Π΅ само Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° лишь ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π΅Π³ΠΎ. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄ m.Use() ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. Π­Ρ‚ΠΎΡ‚ Middleware позволяСт Martini Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ дСйствия Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ запросом. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, ΠΌΡ‹ опрСдСляСм Content-Type для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса. ΠœΠ΅Ρ‚ΠΎΠ΄ m.Map() ΠΆΠ΅ позволяСт ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ структуру ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π·Π°Ρ‚Π΅ΠΌ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… ΠΏΡ€ΠΈ нСобходимости (ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ dependency injection). Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, я создал ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ для кодирования структуры Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ json.

Π’ΡƒΡ‚ ΠΆΠ΅ ΠΌΡ‹ создаСм Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Auth, которая провСряСт Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² наши Ρ€ΠΎΡƒΡ‚Ρ‹ ΠΈ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. Π­Ρ‚ΠΈ Π²Π΅Ρ‰ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ благодаря Martini. Π‘ использованиСм стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊΠΎΠ΄ получился Π±Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

ВзглянСм Π½Π° Ρ„Π°ΠΉΠ» errors.go ΠΏΠ°ΠΊΠ΅Ρ‚Π° conf.

Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ВмСсто ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° try-catch, ΠΎΡ‡Π΅Π½ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ возвращаСтся ошибка. И ΠΏΡ€ΠΈ Π΅Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ, ΠΎΠ½Π° обрабатываСтся. Π•ΡΡ‚ΡŒ встроСнный Ρ‚ΠΈΠΏ error, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт ΠΈΠ· сСбя интСрфСйс:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот интСрфСйс, достаточно ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Error() string. Π― создал свой Ρ‚ΠΈΠΏ для ошибок ApiError, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΠΎΠ»Π΅Π΅ спСцифичСн для ΠΌΠΎΠΈΡ… Π·Π°Π΄Π°Ρ‡, ΠΎΠ΄Π½Π°ΠΊΠΎ совмСстим со встроСнным Ρ‚ΠΈΠΏΠΎΠΌ error.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° β€” type ApiError struct. Π­Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ структуры, ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ постоянно Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅. Она состоит ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (надСюсь, Π²Ρ‹ успСли Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ послС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ). ΠšΡΡ‚Π°Ρ‚ΠΈ, полями ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ структуры, наслСдуя всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ поля. Π’ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… « ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ‚Π΅Π³ΠΈ. Π˜Ρ… ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ encoding/json для указания ΠΈΠΌΠ΅Π½ΠΈ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ json (Π·Π½Π°ΠΊ минус Β«-Β» Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅ ΠΈΠ· Π²Ρ‹Π²ΠΎΠ΄Π°).

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ поля структуры написаны с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Если Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… с прописной Π±ΡƒΠΊΠ²Ρ‹, ΠΎΠ½ΠΈ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚, Π° Π±ΡƒΠ΄ΡƒΡ‚ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π­Ρ‚ΠΎ ΠΆΠ΅ относится ΠΈ ΠΊ функциям ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ. Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ простой ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ инкапсуляции.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ опрСдСляСм прСдустановлСнныС ошибки ΠΈ заполняСм ΠΈΡ… поля. Поля Π²ΠΈΠ΄Π° http.StatusBadRequest β€” это значСния Ρ‚ΠΈΠΏΠ° int Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ http для стандартных ΠΊΠΎΠ΄ΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‚Π°, своСго Ρ€ΠΎΠ΄Π° алиасы. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ сокращСнный синтаксис объявлСния структуры &ApiError<> с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. По Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π‘ΠΈΠΌΠ²ΠΎΠ» & ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Π°Π½Π½ΡƒΡŽ структуру. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new() Ρ‚Π°ΠΊ ΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π° Π½Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. По-Π½Π°Ρ‡Π°Π»Ρƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ нСбольшая ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° с указатСлями, Π½ΠΎ, со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, Π²Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ½ΠΈΡ‚Π΅.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ нашим модСлям. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ ΡƒΡ€Π΅Π·Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΌΠΎΠ΄Π΅Π»ΠΈ постов:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для MongoDb β€” mgo, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Для удобства, я создал Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ Π½Π°Π΄ api mgo β€” utils.NewDbSession. Π›ΠΎΠ³ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: сначала ΠΌΡ‹ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структурС языка, Π° Π·Π°Ρ‚Π΅ΠΌ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° этой структуры, сохраняСм Π΅Π³ΠΎ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² этих ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΌΡ‹ Π²Π΅Π·Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ наш Ρ‚ΠΈΠΏ ошибки conf.ApiError. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ошибки ΠΌΡ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π² наши с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ conf.NewApiError(err). Π’Π°ΠΊ ΠΆΠ΅, Π²Π°ΠΆΠ΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ defer. Он исполняСтся Π² самом ΠΊΠΎΠ½Ρ†Π΅ выполнСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ соСдинСниС с Π‘Π”.

Π§Ρ‚ΠΎ ΠΆ, ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ запросы ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ json Π² ΠΎΡ‚Π²Π΅Ρ‚.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ· URL id Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ поста, создаСм Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр нашСй структуры ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π½Π° Π½Π΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ LoadById(id) для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π‘Π” ΠΈ заполнСния Π΄Π°Π½Π½ΠΎΠΉ структуры. ΠšΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² HTTP ΠΎΡ‚Π²Π΅Ρ‚, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π² Π² json нашим ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ mu.Marshal(post).

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° сигнатуру Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π°ΠΌ прСдоставляСт Martini с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° внСдрСния зависимостСй (dependency injection). И ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (int, []byte) β€” число (статус ΠΎΡ‚Π²Π΅Ρ‚Π°) ΠΈ массив Π±Π°ΠΉΡ‚.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ основныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π²Ρ‹ смоТСтС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ эффСктивный RESTful API интСрфСйс Π² ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ сроки. НадСюсь, ΡΡ‚Π°Ρ‚ΡŒΡ Π±Ρ‹Π»Π° ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· вас Π·Π°Π½ΡΡ‚ΡŒΡΡ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ языка Go. Π£Π²Π΅Ρ€Π΅Π½, Π·Π° Π½ΠΈΠΌ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅.

Для изучСния ΠΌΠΎΠ³Ρƒ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ Π½Π° русском Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° языкС GoΒ» ΠœΠ°Ρ€ΠΊΠ° Π‘Π°ΠΌΠΌΠ΅Ρ€Ρ„ΠΈΠ»ΡŒΠ΄Π°. И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, большС ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π—Π°Ρ‡Π΅ΠΌ Π²Π°ΠΌ ΡƒΡ‡ΠΈΡ‚ΡŒ Go

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ

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

НСмного истории

Π―Π·Ρ‹ΠΊ программирования Go Π±Ρ‹Π» создан ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Google. БобствСнно, Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Golang β€” ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ΅ ΠΎΡ‚ Β«Google languageΒ». НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² анонсС язык Π±Ρ‹Π» Π½Π°Π·Π²Π°Π½ ΠΌΠΎΠ»ΠΎΠ΄Ρ‹ΠΌ, Π² этом Π³ΠΎΠ΄Ρƒ Π΅ΠΌΡƒ исполняСтся ΡƒΠΆΠ΅ Π΄Π΅ΡΡΡ‚ΡŒ Π»Π΅Ρ‚.

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

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ Π±Ρ‹Π» инструмСнтом Π²Π½ΡƒΡ‚Ρ€ΠΈ Google, Π½ΠΎ с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Ρ‹ΡˆΠ΅Π» ΠΈΠ· Π½Π΅Π΄Ρ€ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΈ ΠΈ стал достояниСм общСствСнности.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° языка

Π£ Golang Π΅ΡΡ‚ΡŒ большоС количСство плюсов, ΠΊΠ°ΠΊ извСстных, Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ.

ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π°. БобствСнно, это Π±Ρ‹Π»Π° основная Ρ†Π΅Π»ΡŒ создания языка, ΠΈ Π΅Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ. Π£ Go достаточно простой синтаксис (с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ допущСниями), поэтому прилоТСния ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ быстрСС, Ρ‡Π΅ΠΌ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. И здСсь Π΅ΡΡ‚ΡŒ Π΄Π²Π° интСрСсных ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Golang достаточно быстро ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ β€” Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ собираСтся ΡΡ‚Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ. О Go ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ нСслоТный (ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ), ΠΊΠ°ΠΊ PHP ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Pascal, Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ, ΠΊΠ°ΠΊ Π‘++.

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

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ количСство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Если Π²Π°ΠΌ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ возмоТности Π² Go, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· мноТСства Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Π£ Go Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ прСимущСство β€” ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ языка Π‘ΠΈ. Π•ΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Go-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ β€” это ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ для C-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Чистота ΠΊΠΎΠ΄Π°. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Go позволяСт Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ «чистым». К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ошибкой компиляции. Π’ Go Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ большая Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ форматирования. Π­Ρ‚ΠΎ дСлаСтся, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ gofmt ΠΏΡ€ΠΈ сохранСнии ΠΈΠ»ΠΈ компиляции. Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ правится автоматичСски. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ±ΠΎ всСм этом ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π² Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π΅ Effective.

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

GoDoc. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π°, которая ΠΎΡ‡Π΅Π½ΡŒ сильно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Π‘ΠΎΠ»ΡŒΡˆΠΈΠΌ плюсом GoDoc являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ здСсь Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ языки Π²Ρ€ΠΎΠ΄Π΅ JavaDoc, PHPDoc ΠΈΠ»ΠΈ JSDoc. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ максимальноС количСство ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½Π° ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

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

ΠŸΡ€ΠΈ этом Π² Golang Π½Π΅Ρ‚ классов (Π΅ΡΡ‚ΡŒ структуры, struct), Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ наслСдования, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Плюс Π½Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ ΠΈ Ρ‚.ΠΏ.

Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Go

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ всС, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, связанныС с ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ β€” здСсь большС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ всС ΠΆΠ΅ Python с Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ оптимизациями Π½Π° C/C++ ΠΈ CUDA).

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

Π’ΠΎΡΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Golang

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ
Π‘ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ язык становится всС Π±ΠΎΠ»Π΅Π΅ вострСбованным. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹ΡˆΠ΅, с Golang Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Mail.ru Group, Avito, Ozon, Lamoda, BBC, Canonical ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Β«ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ бизнСс, Π½Π°ΠΌ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, которая обСспСчит быстроС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Π”Π΅Π»Π°Π΅ΠΌ ставку Π½Π° Go ΠΈΠ·-Π·Π° Π΅Π³ΠΎ скорости ΠΈ надёТности, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ β€” Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ программистов, которая Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Β», β€” заявили прСдставитСли Ozon Π² 2018 Π³ΠΎΠ΄Ρƒ, послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ компания приняла Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Golang.

Ну Π° Ρ‡Ρ‚ΠΎ насчСт Π΄ΠΎΡ…ΠΎΠ΄ΠΎΠ² заработная ΠΏΠ»Π°Ρ‚Π° Go-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρƒ составила Π² срСднСм 60-140 тыс. Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ «МоСго ΠšΡ€ΡƒΠ³Π°Β». По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с 2017 Π³ΠΎΠ΄ΠΎΠΌ этот ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ увСличился Π½Π° 8,3%. Π’ 2019 Π³ΠΎΠ΄Ρƒ, скорСС всСго, рост продолТится, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Golang Π½ΡƒΠΆΠ½Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠΌ компаниям.

Π§Ρ‚ΠΎ дальшС?

ΠžΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ Golang Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… спСциалистах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π½Π°ΡŽΡ‚ этот язык, Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ спСциалисту (Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ„ΠΈ) Π½Π°ΠΉΡ‚ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ нСслоТно. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, это ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΈ сСйчас, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ IT Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ постоянный Π΄Π΅Ρ„ΠΈΡ†ΠΈΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

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

Π‘Ρ‚Π°Ρ‚ΡŒΡ Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»Π°ΡΡŒ совмСстно с ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ курса Golang Π² GeekBrains Π‘Π΅Ρ€Π³Π΅Π΅ΠΌ ΠšΡ€ΡƒΡ‡ΠΈΠ½ΠΈΠ½Ρ‹ΠΌ, Π·Π° Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ спасибо!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Π΅ΠΌ Ρ…ΠΎΡ€ΠΎΡˆ язык Go ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π΅Π³ΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ? ВсС плюшки Golang

Π―Π·Ρ‹ΠΊ Go – сСрвСрный язык Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ Β«Hello World!Β», Π½ΠΎ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅ΠΌ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Golang ΠΈ Π΅Π³ΠΎ характСристики.

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ

АппаратныС ограничСния

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ процСссор Pentium 4 с Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частотой 3,0 Π“Π“Ρ† Π±Ρ‹Π» прСдставлСн Π΅Ρ‰Π΅ Π² 2004 Π³ΠΎΠ΄Ρƒ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠ΅ΠΉ Intel. БСгодня Mackbook Pro 2016 ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ частоту 2,9 Π“Π“Ρ†. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΡ‡Ρ‚ΠΈ Π·Π° ΠΎΠ΄Π½ΠΎ дСсятилСтиС мощности Π½Π΅ слишком-Ρ‚ΠΎ измСнились. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ сравнСниС мощностСй Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… этапах Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ Π½ΠΈΠΆΠ΅.

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ

Из ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ частота процСссора ΠΎΡΡ‚Π°Π²Π°Π»ΠΈΡΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ дСсятилСтиС. Если Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ большСго количСства транзисторов окаТСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ – Π²Ρ‹ ΠΎΡˆΠΈΠ±Π°Π΅Ρ‚Π΅ΡΡŒ. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡Π½ΡƒΡ‚ ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Ρ‹Π΅ свойства (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΡƒΠ½Π½Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) ΠΈ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ:

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

ВсС это ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹. НапримСр, многоядСрныС процСссоры ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΡƒ изобраТСния.

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

Β«Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ процСссоры ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Π½ΠΈΡ‚Ρ€ΠΎΠ·Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΡΠΌΠ΅ΡˆΠ½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ. К соТалСнию, языки программирования сСгодня Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ ΠœΠΎΠ½Ρ‚Π΅-ΠšΠ°Ρ€Π»ΠΎ: ΠΎΠ½ΠΈ ΠΏΠΎΠ»Π½Ρ‹ ΠΈΠ·Π³ΠΈΠ±ΠΎΠ² ΠΈ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ΠΎΠ².Β» Β© D. Ungar

Π£ нас Π΅ΡΡ‚ΡŒ язык Go ΠΈ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹!

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ количСства ядСр оТидаСтся ΠΈ Π² дальнСйшСм. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, сСгодняшниС прилоТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ нСсколько микросСрвисов для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ соСдинСний с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, MQ (Messages queues) ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ кэша. Π Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Π½Π°ΠΌΠΈ ПО ΠΈ языки программирования Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ΠΈ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΌΠΈ Π² условиях постоянного увСличСния количСства ядСр.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных языков программирования (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Java, Python etc.) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ. Но настоящая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° связана с ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ исполнСниСм, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², состояниСм Π³ΠΎΠ½ΠΊΠΈ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ. Π­Ρ‚ΠΎ затрудняСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ прилоТСния.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Java. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» потрСбляСт ΠΎΠΊΠΎΠ»ΠΎ 1 Мб объСма памяти, ΠΈ, Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², Ссли Π²Ρ‹ задСйствуСтС тысячи ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², всС ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒΡΡ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΎΠΉ памяти. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΈΠ»ΠΈ нСсколькими ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ – это Ρ‚ΠΎΠΆΠ΅ нСпросто.

Π―Π·Ρ‹ΠΊ Go (ΠΎΠ½ ΠΆΠ΅ Golang) появился Π² 2009 Π³ΠΎΠ΄Ρƒ, ΠΊΠΎΠ³Π΄Π° ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ многоядСрныС процСссоры. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ этот ЯП построСн с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°. Π£ Go Π΅ΡΡ‚ΡŒ goroutine вмСсто ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Они ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2 Кб памяти. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½.

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ

Π’ΠΎΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈΠ· выступлСний Π ΠΎΠ±Π° Пайка, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ вопросы многозадачности ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°.

ВсС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π΄Π΅Π»Π°ΡŽΡ‚ язык Go ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°, ΠΊΠ°ΠΊ Π² C-языках ΠΈ Java, Π½ΠΎ с сохранСниСм СстСствСнности ΠΈ красоты ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ Π² Erlang.

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ

Go запускаСтся Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ

Одним ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… прСимущСств языков C ΠΈ C++ Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ соврСмСнными языками, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Java/Python, являСтся ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ C ΠΈ C++ вмСсто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Ρ‹ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠŸΡ€ΠΈ создании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках Π½Π° Π±Π°Π·Π΅ JVM ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ компилируСтся с понятного Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ ΠΊΠΎΠ΄Π° Π² Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π±Π°Π·ΠΎΠ²ΠΎΠΉ ОБ. Π’ΠΎ врСмя выполнСния VM ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ эти Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΈΡ… Π² Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ процСссоры.

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ языки C/C++, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ VM, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ удаляСтся ΠΎΠ΄ΠΈΠ½ шаг ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° выполнСния, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Код Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ компилируСтся ΠΈΠ· чСловСчСски Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ.

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ

Но освобоТдСниС ΠΈ распрСдСлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° Ρ‚Π°ΠΊΠΈΡ… ЯП – большая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π₯отя Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ языков ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ распрСдСлСниС ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с использованиСм сборки мусора ΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² подсчСта ссылок.

Π―Π·Ρ‹ΠΊ Go собрал Π² сСбС Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΈΠ· всСго. Как ΠΈ языки Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня, Go являСтся ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ такая ΠΆΠ΅ высокая, ΠΊΠ°ΠΊ ΠΈ Π² Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языках. А Π΅Ρ‰Π΅ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ сборщик мусора для выдСлСния ΠΈ удалСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π‘ΠΎΠ»ΡŒΡˆΠ΅ free() ΠΈ malloc(). Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ!

Код Π½Π° Go прост Π² обслуТивании

Π―Π·Ρ‹ΠΊ Go лишСн ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ синтаксиса. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ЯП, Π² Π½Π΅ΠΌ прСдусмотрСн ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈ чистый синтаксис.

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

Go ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ особСнности соврСмСнных языков ООП:

Π’Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ измСнСния Π΄Π΅Π»Π°ΡŽΡ‚ Golang ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языком, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Go – ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ простым. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСрСчислСнныС ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ Π²Π°ΠΌ ΠΈ Π½Π΅ понравятся (особСнно Ссли Π²Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌΠΈ языками ООП).

Но это Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ смоТСтС Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Go. ВсС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ это Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ 2-3 строки ΠΊΠΎΠ΄Π°. Π—Π°Ρ‚ΠΎ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ красивым, чистым ΠΈ понятным.

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ

На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ язык Go ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ эффСктивСн, ΠΊΠ°ΠΊ C/C++, ΠΈ ΠΏΡ€ΠΈ этом сохраняСт синтаксис ΠΊΠΎΠ΄Π° простым, ΠΊΠ°ΠΊ Ruby ΠΈΠ»ΠΈ Python. Π­Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для людСй ΠΈ процСссоров.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… языков, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Swift, синтаксис Go стабилСн. Он остался ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ выпуска вСрсии 1.0, Ρ‡Ρ‚ΠΎ состоялся Π² 2012 Π³ΠΎΠ΄Ρƒ. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстимым.

Golang поддСрТиваСтся Google

Π”Π°, это Π½Π΅ являСтся прямым тСхничСским прСимущСством. Но Go создан ΠΈ поддСрТиваСтся ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠ΅ΠΉ. Google ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΡ… ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… инфраструктур Π² ΠΌΠΈΡ€Π΅, которая ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

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

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, язык программирования Go ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ Π² компаниях IBM, Intel, Adobe, Medium ΠΈ BBC.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ язык Go сильно отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков, это всС Ρ‚ΠΎΡ‚ ΠΆΠ΅ язык программирования. Go обСспСчиваСт:

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

Π”ΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π½Π° дСшСвом, ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° устройствах IOT), Ρ‡Ρ‚ΠΎ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ эффСкт Π½Π° взаимодСйствиС с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π―Π·Ρ‹ΠΊ Go: Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ ΠΈ Π·Π°Ρ‡Π΅ΠΌ программисту ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‚ΠΎΡ€ΠΎΠΉ

Π’ 2009 Π³ΠΎΠ΄Ρƒ Π² Google создали Π½ΠΎΠ²Ρ‹ΠΉ язык программирования. РазбираСмся, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Π΅Π· этого Π±Ρ‹Π»ΠΎ Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΈ Π·Π° Ρ‡Ρ‚ΠΎ программисты Π»ΡŽΠ±ΡΡ‚ Go.

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ

Go ΠΈΠ»ΠΈ Golang β€” язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π² Google Π ΠΎΠ± Пайк ΠΈ КСн Вомпсон, Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ сотрудники Π»Π΅Π³Π΅Π½Π΄Π°Ρ€Π½ΠΎΠΉ Bell Labs. Оба β€” ΠΊΡƒΠ»ΡŒΡ‚ΠΎΠ²Ρ‹Π΅ личности Π² Computer Science. А Вомпсон ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· создатСлСй ОБ Unix ΠΈ языка B (ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ° C).

golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ golang язык программирования для Ρ‡Π΅Π³ΠΎ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ. Π€ΠΎΡ‚ΠΎ golang язык программирования для Ρ‡Π΅Π³ΠΎ

Π€Π°Π½Π°Ρ‚ Free Software Foundation, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Linux ΠΈ Π½Π΅Π΄ΠΎΠ»ΡŽΠ±Π»ΠΈΠ²Π°Π΅Ρ‚ Windows. ΠŸΠΈΡˆΠ΅Ρ‚ истории ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ΠΈΠ½Π³ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Python. Π’Π»ΡŽΠ±Π»Π΅Π½ Π² LISP, Π½ΠΎ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π½Π° Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Ну здравствуй, Go: пишСм Π½Π°ΡˆΡƒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

По Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Β« Hello, World!Β». Π’ коммСнтариях β€” Ρ€Π°Π·Π±ΠΎΡ€ синтаксиса:

КакиС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Π² Go

Go β€” язык со строгой статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ каТдая пСрСмСнная ΠΈΠΌΠ΅Π΅Ρ‚ свой Ρ‚ΠΈΠΏ ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ нСльзя. Π‘Ρ€Π°Π²Π½ΠΈΠΌ с PHP:

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π»Π΅Ρ‚Ρƒ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ строкой ΠΈ Ρ†Π΅Π»Ρ‹ΠΌ числом. Π’ языкС Go это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β€” Ссли пСрСмСнная объявлСна ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число, Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠ½Π° ΠΈ останСтся Π½Π° протяТСнии всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Ρ‘ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. А Ссли попытаСмся ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² Π½Π΅Ρ‘ Π΄Π°Π½Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° β€” ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Go подскаТСт, Ρ‡Ρ‚ΠΎ Ρƒ нас ошибка.

Π’ языкС Π΅ΡΡ‚ΡŒ 11 Ρ‚ΠΈΠΏΠΎΠ² Ρ†Π΅Π»Ρ‹Ρ… чисСл. Они Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ количСством Π±ΠΈΡ‚, спСцификой (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ byte для Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… чисСл) ΠΈ контСкстом (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, uintptr для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с внСшним ΠΊΠΎΠ΄ΠΎΠΌ). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, комплСксныС числа, Π±ΡƒΠ»Π΅Π²Ρ‹ числа, строки ΠΈ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° чисСл с Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠΌ памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Go ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² стилС Паскаля β€” Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ var, Π° само объявлСниС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ с присваиваниСм:

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания Π² Go β€” Π·Π½Π°ΠΊ Β«Ρ€Π°Π²Π½ΠΎΒ»:

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π² Go: Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹, ΠΊΠ°Π½Π°Π»Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ свойство Go β€” ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ. Π’ΡƒΡ‚ придётся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

Π’ 1965 Π³ΠΎΠ΄Ρƒ Π“ΠΎΡ€Π΄ΠΎΠ½ ΠœΡƒΡ€, ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Intel, сформулировал Π·Π°ΠΊΠΎΠ½: ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ Π΄Π²Π° Π³ΠΎΠ΄Π° количСство транзисторов Π½Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ схСмС Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π²Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ. Никаких Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ» Π·Π° Π½ΠΈΠΌ Π½Π΅Ρ‚ β€” просто наблюдСниС. И Π΄ΠΎ XXI Π²Π΅ΠΊΠ° Β«Π·Π°ΠΊΠΎΠ½ ΠœΡƒΡ€Π°Β» Ρ€Π°Π±ΠΎΡ‚Π°Π» исправно. Но ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ послС Pentium 4 стало понятно: Π΅Ρ‰Ρ‘ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ процСссоры Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Π³Ρ€Π΅Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ свСрхновая. Π’ΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ многоядСрныС процСссоры β€” тактовая частота ΠΈ количСство транзисторов ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ мСнялись, Π° суммарноС быстродСйствиС росло.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС возмоТности Ρ‚Π°ΠΊΠΈΡ… процСссоров, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π°Π΄ΠΎ сразу ΠΏΠΈΡΠ°Ρ‚ΡŒ с расчётом Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄Π΅Ρ€Π½ΠΎΡΡ‚ΡŒ. Π’ Go для этого Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ сущности: Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΈ ΠΊΠ°Π½Π°Π»Ρ‹.

Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹

Π­Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСт нСсколько строк практичСски ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρƒ, Π½Π°Π΄ΠΎ просто Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π΅ΠΉ go.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” практичСски ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ², нСсмотря Π½Π° Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ time. Sleep (10), ΠΎΠ±Π΅ΠΈΡ… Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π² нСбольшой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ это Π΄Π΅Π»Π°Ρ‚ΡŒ практичСски бСссмыслСнно, Π° Π²ΠΎΡ‚ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ мноТСства Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ β€” ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ. Экономится врСмя ΠΈ рСсурсы процСссора ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ.

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

ΠšΠ°Π½Π°Π»Ρ‹

Π­Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠ°Π½Π°Π»Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠΌ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π’ ΠΊΠ°Π½Π°Π»Π°Ρ… Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π½Ρ‹Π΅ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π½Π΅ смогли ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΊΠΈΠ½ΡƒΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° Ρ€Π°Π·Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°Π½Π°Π»ΠΎΠ²: ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, int β€” Ρ†Π΅Π»Ρ‹Π΅ числа.

НСмного ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания ΠΈ сразу Π·Π°Π΄Π°Ρ‘ΠΌ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Но интСрСсно, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°Π½Π°Π»Π° Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π³ΠΎ адрСс Π² памяти (Π²Ρ‹Π²ΠΎΠ΄ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Printf).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ объСдиним Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΈ ΠΊΠ°Π½Π°Π»:

А сСйчас слСдитС Π·Π° Ρ€ΡƒΠΊΠ°ΠΌΠΈ β€” Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠ΄:

Π’ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ вписываСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° программирования, ΠΈ язык Go Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΅Ρ‘. Π’ Π½Ρ‘ΠΌ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ конструкции, элСмСнты ООП ΠΈ всё Ρ‚Π°ΠΊΠΎΠ΅. Но ΠΈΠΌΠ΅Π½Π½ΠΎ ярко выраТСнная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° Π΄Π΅Π»Π°Π΅Ρ‚ Golang ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом для высоконагруТСнных сСрвСрных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, сСрвисов ΠΈ слоТных вычислСний.

Π§Ρ‚ΠΎ Π΅Ρ‰Ρ‘ Π΅ΡΡ‚ΡŒ Π² Go: возмоТности для программистов

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

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

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