Kuv txoj kev los ntawm Python mus rau - sib qhia cov lus qhia thiab cov peev txheej

Kuv txoj kev los ntawm Python mus rau - sib qhia cov lus qhia thiab cov peev txheej

Los ntawm tus txhais lus: pauv Rau koj, Ilad Leev tsab xov xwm txog kev hloov ntawm Python mus rau. Cov kab lus yuav muaj txiaj ntsig tsis yog rau cov neeg ua haujlwm tshiab xwb, tab sis kuj rau txhua tus neeg uas nyiam mus.

Kuv nyiam Python. Cov lus no yog kuv nyiam tshaj rau tsib xyoos dhau los. Nws yog tus phooj ywg, siv tau, thiab yooj yim kawm. Siv rau yuav luag txhua yam: los ntawm kev sau ntawv yooj yim thiab txhim kho lub vev xaib mus rau cov ntaub ntawv pom thiab kev kawm tshuab

Kev maj mam "maturation" ntawm Go, cov zej zog dav dav thiab qhov tseeb tias ntau thiab ntau lub tuam txhab tau txais cov lus no tom qab kev sim ua tiav tau yuam kom kuv ua tib zoo mloog nws thiab delve rau hauv cov ntaub ntawv. Tab sis cov ncej no tsis yog hais txog qhov twg zoo dua - Python lossis Go: Muaj ntau qhov sib piv hauv Is Taws Nem. Hauv kuv lub tswv yim, txhua yam nyob ntawm daim ntawv thov. Kuv yuav tham txog vim li cas kuv thiaj xaiv Go, muab qee cov lus qhia thiab txuas rau cov peev txheej muaj txiaj ntsig rau txhua tus neeg nyiam lub ntsiab lus.

Skillbox pom zoo: Cov chav kawm siv tau Python developer los ntawm kos.

Peb nco qab: rau txhua tus neeg nyeem Habr - 10 ruble luv nqi thaum tso npe rau hauv ib chav kawm Skillbox siv Habr promo code.

Kuv txoj kev los ntawm Python mus rau - sib qhia cov lus qhia thiab cov peev txheej

Kev soj ntsuam

Thawj qhov uas kuv tau ua thaum pib ntawm kuv txoj kev taug yog kawm cov lus qhia zoo heev "Ncig Teb Chaws Mus" Nws muab ib qho kev nkag siab ntawm syntax ntawm cov lus.

Txhawm rau txhim kho kuv txoj kev paub, kuv kuj nyeem phau ntawv "Mus rau Python Programmers”, uas tso cai rau peb mus rau theem tom ntej - sim thiab ua yuam kev.

Kuv coj cov haujlwm paub kuv tau siv hauv Python (JSON serialization lossis tuav HTTP hu) thiab sim sau lawv hauv Go. Ua tsaug rau qhov kev sib piv meej no, kuv muaj peev xwm txheeb xyuas qhov sib txawv tseem ceeb ntawm cov lus.

Qhov project layout

Ua ntej tshaj plaws, Python tsis xav tau cov npe tshwj xeeb hierarchy, whereas Go ua.

Mus siv qhov "standard" layout, uas yog ib qho nyuaj me ntsis thiab yuav tsum tau ua hauj lwm ntau dua. Ntawm qhov tod tes, qhov tshwm sim yog lub hauv paus txheej txheem zoo uas siv cov qauv qauv, thiab cov cai tseem nyob nruj me ntsis raws li qhov project nthuav.

Official tutorial "Yuav sau Go Code li cas” piav qhia seb yuav npaj koj txoj haujlwm li cas.

Static muaj zog ntaus ntawv

Mus yog statically ntaus ntawv, uas yuav ua rau cov neeg siv rau dynamically typed lus zoo li Python thiab Ruby tsis xis nyob.

Tsis muaj qhov tsis ntseeg tias cov lus dynamic yog qhov ua yuam kev ntau dua thiab yuav tsum tau siv zog ntau dua ntawm tus tsim tawm kom siv tau cov ntaub ntawv nkag. Ib qho piv txwv yog ib txoj haujlwm uas suav cov lej ntawm ob tus lej. Yog tias koj hla txoj hlua mus rau qhov ua haujlwm (uas tsis yog qhov tsawg), nws yuav ua rau TypeError.

Qhov no tsis tuaj yeem tshwm sim hauv Go vim tias koj yuav tsum tshaj tawm ib hom rau txhua qhov sib txawv thiab ua haujlwm thiab hom kev hloov pauv dab tsi yuav rov qab los.

Thaum xub thawj nws nyuaj heev-Kuv xav tias qhov no ntawm Go ua rau qeeb qeeb-tab sis tom qab ntawd kuv pom tau tias kev tshaj tawm txhua yam yeej txuag lub sijhawm thiab txo qhov yuav ua rau yuam kev.

Native concurrency

Go muaj kev txhawb nqa ib txwm siv los ntawm subroutines thiab cov kav dej, uas yooj yim.

Lub tswv yim ntawm cov channel zoo li tsis meej pem thaum xub thawj. Txawm li cas los xij, dhau sij hawm, nws tau pom tseeb dua, thiab koj pib txaus siab rau cov cib fim tshiab thiab ua haujlwm nrog lawv.

Ntawm no yog ib tug visualization ntawm txhua yam hais los ntawm Ivan Daniluk ua.

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
}

Kuv txoj kev los ntawm Python mus rau - sib qhia cov lus qhia thiab cov peev txheej

Piv txwv ntxiv no и no.

Ua haujlwm nrog JSON

Zoo, json.loads() tsis muaj ntxiv lawm. Hauv Python txhua yam yooj yim: peb siv json.loads, thiab tsis muaj teeb meem.

Tab sis nyob rau hauv Go, ib hom lus statically ntaus ntawv, qhov kev ua haujlwm no yuav nyuaj dua.

Ntawm no, thaum siv JSON, txhua yam yog predefined. Txhua qhov chaw uas tsis haum rau hauv cov qauv muab yuav raug tsis quav ntsej, uas yog qhov zoo. Koj tuaj yeem xav tias nws yog qhov kev pom zoo ua ntej ntawm ob tog. Cov ntaub ntawv koj tau txais hauv JSON yuav tsum yog qhov koj xav tau, thiab JSON teb thiab hom yuav tsum "pom zoo" los ntawm ob tog.

{
  “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"`
}

Tau kawg, koj tuaj yeem deserialize JSON yam tsis muaj cov qauv, tab sis qhov no yuav tsum tau zam yog tias ua tau thiab cov lus zoo li qub yuav tsum raug coj mus rau hauv tus account.

Kev txiav txim siab JSON ntawm GO yog qhov zoo tshaj plaws piav nyob rau hauv no ncej los yog no.

tub nkeeg dhau los hloov koj JSON rau tus qauv Go? Tsis muaj teeb meem, cov cuab yeej no yuav ua txhua yam rau koj.

huv code

Lub Go compiler yuav ib txwm sim ua kom koj cov cai huv si. Nws suav hais tias cov kev hloov pauv tsis tau siv los ua qhov yuam kev sib sau ua ke. Mus siv txoj hauv kev tshwj xeeb uas tso cai rau lub kaw lus los daws cov teeb meem formatting feem ntau. Yog li, Go yuav khiav qhov kev pab cuam gofmt thaum txuag lossis sau thiab kho qhov formatting nws tus kheej.

Koj tsis quav ntsej txog qhov sib txawv? OK! Tsuas yog siv _ (underscore) thiab muab nws rau tus id npliag.

Mastrid nyeem rau qhov no ntawm kev ua haujlwm nrog cov lus yog cov ntaub ntawv los ntawm "Siv tau mus".

Nrhiav lub tsev qiv ntawv zoo thiab lub moj khaum

Kuv tau siv lub moj khaum thiab cov tsev qiv ntawv zoo li Flask, Jinja2, Thov, thiab txawm tias Kazoo nrog Python, yog li kuv ntshai tias kuv yuav tsis pom dab tsi haum rau Go.

Tab sis lub zej zog twb tau daws cov teeb meem no: cov lus muaj nws tus kheej cov tsev qiv ntawv tshwj xeeb uas tso cai rau koj tsis nco qab txog yam koj tau siv ua ntej.

Ntawm no yog kuv nyiam.

Python Thov => net/http

net/http muab qhov yooj yim thiab yooj yim-rau-siv HTTP tus neeg siv khoom thiab kev siv server.

Flask + Jinja2 => Gin

Gin - HTTP web moj khaum nrog API yooj yim heev: txoj kev tsis, cov ntaub ntawv rub tawm, pab pawg routing (/api/v1, / api/v2), kev cai teev cov ntaub ntawv ua haujlwm zoo li qub, HTML rendering thiab muaj zog heev kev cai nruab nrab.
Tus nqi qhov no ntsuas ntsuas.

CLI Creation => Cobra

Cobra - lub tsev qiv ntawv rau tsim cov ntawv thov CLI muaj zog, nrog rau cov kev pab cuam tsim cov ntawv thov thiab cov ntaub ntawv batch.
Cobra yog siv rau hauv ntau txoj haujlwm Go loj, suav nrog Kubernetes, thiab lwm yam thiab OpenShift.

Nov yog ob peb lub tsev qiv ntawv ntxiv uas kuv pom zoo: Viper, Gonfig thiab daim ntawv teev no amazing - Awesome - Mus.

Lwm Cov Kev Pabcuam

[1] Francesc Campoy  - koj yeej yuav tsum tau soj ntsuam cov no YouTube channel и GitHub profile.

[2] GopherCon - video. [3] Mus rau Web Piv txwv. [4] Golang Weekly, Gopher Academy, Golang News - Twitter account.

Summing txog

Tau ua tus neeg siv Python ib txwm muaj tsib xyoos, kuv ntshai tias kev hloov mus rau Go yuav mob heev.

Tab sis tsis yog: muaj kev ua haujlwm los ntawm Go zej zog uas nthuav dav thiab ua tiav cov peev txheej ntawm cov lus, nrog rau ntau yam kev pab cuam uas yuav pab koj hloov pauv.

Mus tau loj hlob sai, thiab kuv vam tias Google tuaj yeem ua nws yog hom lus tseem ceeb rau kev sau ntawv huab thiab kev tsim kho vaj tse.

Koom nrog tam sim no!

Kuv txoj kev los ntawm Python mus rau - sib qhia cov lus qhia thiab cov peev txheej

Skillbox pom zoo:

Tau qhov twg los: www.hab.com