
Lati ọdọ onitumọ: túmọ . Nkan naa yoo wulo kii ṣe fun awọn olupilẹṣẹ alakobere, ṣugbọn fun gbogbo eniyan ti o nifẹ bakan ni Go.
Mo feran Python. Ede yii jẹ ayanfẹ mi fun ọdun marun sẹhin. O jẹ ọrẹ, daradara, ati rọrun lati kọ ẹkọ. Ti a lo fun fere ohun gbogbo: lati iwe afọwọkọ ti o rọrun ati idagbasoke wẹẹbu si iworan data ati ẹkọ ẹrọ
Awọn mimu "maturation" ti Go, agbegbe ti o pọju ati otitọ pe awọn ile-iṣẹ diẹ sii ati siwaju sii n gba ede yii lẹhin awọn idanwo aṣeyọri fi agbara mu mi lati fiyesi si rẹ ati ki o ṣawari sinu awọn iwe-iwe. Ṣugbọn ifiweranṣẹ yii kii ṣe nipa eyiti o dara julọ - Python tabi Go: Nọmba nla ti awọn afiwera wa lori Intanẹẹti. Ni ero mi, gbogbo rẹ da lori ohun elo naa. Emi yoo sọrọ nipa idi ti MO fi yan Go, fifun diẹ ninu awọn imọran ati awọn ọna asopọ si awọn orisun to wulo fun ẹnikẹni ti o nifẹ si koko-ọrọ naa.
Skillbox ṣe iṣeduro: Ilana ti o wulo .
A leti: fun gbogbo awọn oluka ti "Habr" - ẹdinwo ti 10 rubles nigbati o forukọsilẹ ni eyikeyi iṣẹ-ẹkọ Skillbox nipa lilo koodu ipolowo “Habr”.

Awọn akiyesi
Ohun akọkọ ti Mo ṣe ni ibẹrẹ irin-ajo mi ni ikẹkọ ikẹkọ osise ti o dara julọ “" O funni ni oye ti sintasi ti ede naa.
Kí ìmọ̀ mi lè túbọ̀ sunwọ̀n sí i, mo tún ka ìwé náà “”, eyiti o gba wa laaye lati tẹsiwaju si ipele atẹle - idanwo ati aṣiṣe.
Mo mu awọn iṣẹ ti o mọ ti Mo lo ni Python (serialization JSON tabi mimu awọn ipe HTTP mu) ati gbiyanju kikọ wọn ni Go. Ṣeun si afiwera ti o han gbangba yii, Mo ni anfani lati ṣe idanimọ awọn iyatọ bọtini laarin awọn ede.
Ifilelẹ ise agbese
Ni akọkọ, Python ko nilo ilana ilana ilana kan pato, lakoko ti Go ṣe.
Go nlo ifilelẹ “boṣewa”, eyiti o jẹ eka diẹ sii ti o nilo iṣẹ diẹ sii. Ni apa keji, abajade jẹ ipilẹ koodu ti o ni eto ti o dara ti o lo eto modular kan, ati pe koodu naa wa ni iṣeto ti o muna bi iṣẹ akanṣe n gbooro.
Ikẹkọ osise "” ṣe alaye bi o ṣe le ṣeto iṣẹ rẹ.
Aimi to lagbara titẹ
Go ti tẹ ni iṣiro, eyiti yoo jẹ ki awọn ti a lo si awọn ede ti a tẹ ni agbara bii Python ati Ruby ni itunu.
Ko si iyemeji pe awọn ede ti o ni agbara jẹ aṣiṣe-aṣiṣe diẹ sii ati pe o nilo igbiyanju diẹ sii ni apakan ti olupilẹṣẹ lati fọwọsi data titẹ sii. Apeere jẹ iṣẹ kan ti o ṣe iṣiro apapọ odidi meji. Ti o ba kọja okun kan si iṣẹ kan (eyiti kii ṣe toje yẹn), yoo ja si ni IruError kan.
Eyi ko le ṣẹlẹ ni Go nitori o ni lati sọ iru kan fun gbogbo oniyipada ati iṣẹ ati iru oniyipada iṣẹ naa yoo pada.
Ni akọkọ o jẹ didanubi-Mo ro pe ẹya yii ti Go fa fifalẹ awọn nkan-ṣugbọn lẹhinna Mo rii pe sisọ ohun gbogbo n gba akoko pamọ gangan ati dinku iṣeeṣe awọn aṣiṣe.
Ibaṣepọ abinibi
Go ni atilẹyin concurrency abinibi nipa lilo awọn subroutines ati awọn paipu, eyiti o rọrun.
Awọn Erongba ti awọn ikanni dabi a bit airoju ni akọkọ. Sibẹsibẹ, ni akoko pupọ, o di mimọ, ati pe o bẹrẹ lati gbadun awọn aye tuntun ati ṣiṣẹ ni itara pẹlu wọn.
Eyi ni iworan ti ohun gbogbo ti a sọ lati .
package main
func main() {
// create new channel of type int
ch := make(chan int)
// start new anonymous goroutine
go func() {
// send 42 to channel
ch <- 42
}()
// read from channel
<-ch
} 
Awọn apẹẹrẹ diẹ sii и .
Nṣiṣẹ pẹlu JSON
O dara, json.loads () ko si mọ. Ni Python ohun gbogbo rọrun: a lo json.loads, ati pe ko si awọn iṣoro.
Ṣugbọn ni Go, ede ti a tẹ ni iṣiro, iṣẹ ṣiṣe yii di eka sii.
Nibi, nigba lilo JSON, ohun gbogbo ti wa ni asọye tẹlẹ. Eyikeyi aaye ti ko ba wo inu eto ti a fun ni yoo kọju, eyiti o dara. O le ronu rẹ bi ilana ti a ti gba tẹlẹ laarin awọn ẹgbẹ meji. Awọn data ti o gba ni JSON yẹ ki o jẹ ohun ti o nireti, ati awọn aaye JSON ati awọn iru yẹ ki o jẹ "gba lori" nipasẹ ẹgbẹ mejeeji.
{
“first”: “Elad”,
“last”: “Leev”,
“location”:”IL”,
“id”: “93”
}type AccountData struct {
First string `json:"first"`
Last string `json:"last"`
Location string `json:"location"`
ID string `json:"id"`
}Nitoribẹẹ, o le deserialize JSON laisi awọn ẹya, ṣugbọn eyi yẹ ki o yago fun ti o ba ṣeeṣe ati pe o yẹ ki o ṣe akiyesi iseda aimi ti ede naa.
Yiyipada JSON lori GO dara julọ tabi .
Ọlẹ pupọ lati yi JSON rẹ pada si eto Go kan? Kosi wahala, .
Mọ koodu
Akopọ Go yoo ma gbiyanju nigbagbogbo lati jẹ ki koodu rẹ di mimọ. O ka awọn oniyipada ti ko lo lati jẹ aṣiṣe akojọpọ. Go nlo ọna alailẹgbẹ ti o fun laaye eto lati yanju awọn iṣoro ọna kika pupọ julọ. Nitorinaa, Go yoo ṣiṣẹ eto gofmt nigba fifipamọ tabi ṣajọ ati ṣatunṣe ọna kika funrararẹ.
Ṣe o ko bikita nipa awọn oniyipada? O DARA! Lo _ (underscore) ki o si fi si id sofo.
Ikẹkọ Mastrid fun apakan yii ti ṣiṣẹ pẹlu ede jẹ alaye lati “".
Wiwa awọn ọtun ìkàwé ati nílẹ
Mo ti lo awọn ilana ati awọn ile-ikawe bii Flask, Jinja2, Awọn ibeere, ati paapaa Kazoo pẹlu Python, nitorinaa Mo bẹru pe Emi kii yoo rii ohunkohun ti o baamu fun Go.
Ṣugbọn agbegbe ti yanju awọn iṣoro wọnyi tẹlẹ: ede naa ni awọn ile-ikawe alailẹgbẹ tirẹ ti o jẹ ki o gbagbe patapata nipa ohun ti o lo tẹlẹ.
Eyi ni awọn ayanfẹ mi.
Awọn ibeere Python => net/http
n pese alabara HTTP ti o rọrun ati rọrun lati lo ati imuse olupin.
Flask + Jinja2 => Gin
- Ilana oju opo wẹẹbu HTTP pẹlu API ti o rọrun pupọ: awọn aye ipa ọna, awọn faili igbasilẹ, ipa-ọna ẹgbẹ (/api/v1, /api/v2), awọn ọna kika log aṣa ti n ṣiṣẹ awọn faili aimi, Rendering HTML ati agbedemeji aṣa ti o lagbara gaan.
Oṣuwọn ala.
Iṣẹda CLI => Ejò
- ile-ikawe kan fun ṣiṣẹda awọn ohun elo CLI ti o lagbara, ati eto kan fun ṣiṣẹda awọn ohun elo ati awọn faili ipele.
Cobra ni a lo ni ọpọlọpọ awọn iṣẹ akanṣe Go nla, pẹlu Kubernetes, etcd ati OpenShift.
Eyi ni awọn ile-ikawe diẹ diẹ sii ti Mo ṣeduro gaan: , ati atokọ iyalẹnu yii - .
Miiran Wulo Resources
[1] - dajudaju o nilo lati ṣe iṣiro awọn wọnyi и .
[2] . [3] . [4] , , - Twitter iroyin.Summing soke
Lehin ti o jẹ olumulo Python deede fun ọdun marun, Mo bẹru pe iyipada si Go yoo jẹ irora.
Ṣugbọn rara: iṣẹ wa lati agbegbe Go ti o gbooro ati ṣe afikun awọn agbara ti ede, ati ọpọlọpọ awọn orisun iwulo ti yoo ṣe iranlọwọ fun ọ pẹlu iyipada naa.
Go n dagba ni kiakia, ati pe Mo nireti pe Google le jẹ ki o jẹ ede akọkọ fun kikọ awọn ohun elo awọsanma ati awọn amayederun.
Darapo Mo Wa!

Skillbox ṣe iṣeduro:
- Ọdun meji iṣẹ ikẹkọ .
- Ẹkọ lori ayelujara ti ẹkọ .
- Eko odun to wulo .
orisun: www.habr.com
