
Vum Iwwersetzer: iwwersat . Den Artikel wÀert nëtzlech sinn net nëmme fir UfÀnger Programméierer, awer och fir jiddereen deen iergendwéi un Go interesséiert ass.
Ech hu gÀr Python. Dës Sprooch war meng Léifsten fir déi lescht fënnef Joer. Hien ass frëndlech, effizient an einfach ze léieren. Benotzt fir bal alles: vun einfache Skripting a Webentwécklung bis Datenvisualiséierung a Maschinnléieren
Déi graduell "Reifung" vu Go, déi extensiv Gemeinschaft an d'Tatsaach, datt ëmmer méi Firmen dës Sprooch no erfollegrÀichen Tester adoptéieren, hunn mech gezwongen drop opmierksam ze maachen an an d'Literatur ze verdéiwen. Awer dëse Post ass net iwwer wat besser ass - Python oder Go: Et ginn eng grouss Zuel vu VerglÀicher um Internet. Menger Meenung no hÀnkt alles vun der Applikatioun of. Ech wÀert schwÀtzen iwwer firwat ech Go gewielt hunn, ginn e puer Tipps a Linken op nëtzlech Ressourcen fir jiddereen interesséiert am Thema.
Skillbox recommandéiert: Praktesch Cours .
Mir erënneren Iech: fir all Habr Lieser - eng Remise vun 10 Rubel wann Dir Iech an all Skillbox Cours aschreift mat dem Habr Promo Code.

Observatiounen
Dat éischt wat ech am Ufank vu menger Rees gemaach hunn war den exzellenten offiziellen Tutorial studéieren "" Et gëtt e VerstÀndnis vun der Syntax vun der Sprooch.
Fir mÀi Wëssen ze verbesseren, liesen ech och d'Buch "", wat eis erlaabt huet op déi nÀchst Etapp weiderzemaachen - Versuch a Feeler.
Ech hunn déi vertraute Funktiounen geholl, déi ech am Python benotzt hunn (JSON Serialiséierung oder HTTP-Uriff behandelen) a probéiert se a Go ze schreiwen. Dank dësem klore Verglach konnt ech Schlëssel Differenzen tëscht Sproochen identifizéieren.
Projet Layout
Als éischt erfuerdert Python keng spezifesch Verzeechneshierarchie, wÀrend Go et mécht.
Go benotzt de "Standard" Layout, deen e bësse méi komplex ass a méi Aarbecht erfuerdert. Op der anerer SÀit ass d'Resultat eng gutt strukturéiert Codebasis déi eng modulÀr Struktur benotzt, an de Code bleift strikt organiséiert wéi de Projet erweidert.
Offiziell Tutorial "" erklĂ€ert wĂ©i Dir Ăr Aarbecht organisĂ©iert.
Statesch staark Tippen
Go ass statesch getippt, wat déi benotzt fir dynamesch getippte Sprooche wéi Python a Ruby onwuel fillt.
Et gëtt keen Zweiwel datt dynamesch Sprooche méi Feeler ufÀlleg sinn a méi Effort vum Entwéckler erfuerderen fir Inputdaten ze validéieren. E Beispill ass eng Funktioun déi d'Zomm vun zwee ganz Zuelen berechent. Wann Dir e String un eng Funktioun passéiert (wat net sou rar ass), wÀert et zu engem TypeError resultéieren.
Dëst kann net am Go geschéien well Dir en Typ fir all Variabel a Funktioun muss deklaréieren a wéi eng Variabel d'Funktioun zréckkënnt.
Am Ufank war et lÀsteg - ech hu geduecht datt dës Feature vu Go d'Saache verlangsamt huet - awer dunn hunn ech gemierkt datt alles deklaréieren tatsÀchlech ZÀit spuert an d'Wahrscheinlechkeet vu Feeler reduzéiert.
Gebierteg GlÀichzÀiteg
Go huet gebierteg Concurrency ĂnnerstĂ«tzung mat Subroutinen a PĂ€ifen, wat bequem ass.
D'Konzept vun de Channels schéngt am Ufank e bësse konfus. Wéi och ëmmer, mat der ZÀit gëtt et méi kloer, an Dir fÀnkt un nei Méiglechkeeten ze genéissen an aktiv mat hinnen ze schaffen.
Hei ass eng Visualiséierung vun allem wat gesot gëtt .
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
} 
Méi Beispiller О .
Schafft mat JSON
Gutt, json.loads() ass net méi. Am Python ass alles einfach: mir benotzen json.loads, an et gi keng Problemer.
Awer am Go, enger statesch getippten Sprooch, gëtt dës Operatioun méi komplex.
Hei, wann Dir JSON benotzt, ass alles virdefinéiert. All Feld dat net an déi gegebene Struktur passt gëtt ignoréiert, wat gutt ass. Dir kënnt et als e viraus ausgemaache Protokoll tëscht zwou Parteien denken. D'Daten, déi Dir am JSON kritt, solle sinn wat Dir erwaart, an d'JSON Felder an Aarte solle vu béide Parteien "ausgemaach" ginn.
{
â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"`
}Natierlech kĂ«nnt Dir JSON ouni Strukturen deserialisĂ©ieren, awer dĂ«st sollt vermeit ginn wa mĂ©iglech an d'statesch Natur vun der Sprooch sollt berĂŒcksichtegt ginn.
Decodéieren JSON op GO ass am beschten oder .
Ze faul fir Ăren JSON an eng Go Struktur ze konvertĂ©ieren? Kee Problem, .
Propper Code
De Go Compiler wĂ€ert Ă«mmer probĂ©ieren Ăre Code propper ze halen. Et betruecht onbenotzt Variabelen als KompilĂ©ierungsfehler. Go benotzt eng eenzegaarteg Approche dĂ©i de System erlaabt dĂ©i meescht FormatĂ©ierungsproblemer ze lĂ©isen. Also, Go wĂ€ert de gofmt Programm lafen wann Dir spĂ€ichert oder kompilĂ©iert a korrigĂ©iert d'FormatĂ©ierung selwer.
Sidd Dir egal iwwer Variabelen? OK! Benotzt einfach _ (ĂnnerstĂ«tzung) an zielt et op eng eidel ID.
D'Mastrid Tutorial fir dësen Deel vun der Sprooch ze schaffen ass Informatioun vun "".
Fannt déi richteg Bibliothéik a Kaderen
Ech hunn Kaderen a Bibliothéike benotzt wéi Flask, Jinja2, Requests, a souguer Kazoo mam Python, also hat ech Angscht datt ech nÀischt géif fannen wat fir Go passt.
Awer d'Gemeinschaft huet dës Probleemer scho geléist: d'Sprooch huet seng eege eenzegaarteg Bibliothéiken, déi Iech erlaben komplett ze vergiessen wat Dir virdru benotzt hutt.
Hei sinn meng Favoritten.
Python Requests => net/http
bitt eng praktesch an einfach ze benotzen HTTP Client a Server Implementatioun.
Flask + Jinja2 => Gin
- HTTP Web Kader mat enger ganz einfacher API: Wee Parameteren, erofzelueden Fichieren, Grupp Routing (/api/v1, /api/v2), personaliséiert Log Formater déi statesch Fichieren déngen, HTML Rendering a wierklech mÀchteg personaliséiert Middleware.
Taux benchmark.
CLI Kreatioun => Cobra
- eng Bibliothéik fir mÀchteg CLI Uwendungen ze kreéieren, souwéi e Programm fir Uwendungen a Batchdateien ze generéieren.
Cobra gëtt a ville grousse Go Projeten benotzt, dorënner Kubernetes, etcd an OpenShift.
Hei sinn e puer méi Bibliothéiken déi ech staark recommandéieren: , an dës erstaunlech Lëscht - .
Aner hëllefrÀich Ressourcen
[1] â- Dir musst definitiv dĂ«s bewĂ€erten Đž .
[2] . [3] . [4] , , - Twitter Konten.Ze summéieren
Nodeems ech e reegelméissege Python Benotzer fir fënnef Joer war, hat ech Angscht datt de Wiessel op Go schmerzhaf wier.
Awer nee: et gëtt Aarbecht vun der Go Gemeinschaft déi d'FÀegkeete vun der Sprooch erweidert an ergÀnzt, souwéi verschidde nëtzlech Ressourcen déi Iech beim Iwwergang hëllefen.
Go wiisst séier, an ech hoffen, datt Google et als primÀr Sprooch maache kann fir Cloud-Applikatiounen an Infrastruktur ze schreiwen.
Maacht elo bÀi!

Skillbox recommandéiert:
- Zwee-Joer praktesch Cours .
- Online pÀdagogesch Cours .
- Praktesch ee Joer Cours .
Source: will.com
