Ohjelmointi

Go-opas: Aloita Google Go -palvelun käyttö

Miksi haluat käyttää Go-kieltä? Pohjimmiltaan se on ytimekäs, yksinkertainen, turvallinen ja nopeasti käännetty kieli, jolla on upeat samanaikaisuusominaisuudet, ja se käsittelee helposti suuria projekteja. Se on myös ilmainen avoimen lähdekoodin, vaikka se on alun perin kehitetty Googlessa.

Kielen yhden suunnittelijan Rob Piken mukaan "Go-projektin tavoitteena oli poistaa Googlen ohjelmistokehityksen hitaus ja kömpelyys ja tehdä prosessista siten tuottavampi ja skaalautuvampi. Kielen on suunnitellut suurille ohjelmistojärjestelmille kirjoittavat - ja lukevat, virheenkorjaavia ja ylläpitäviä ihmisiä - varten. "

Näiden tavoitteiden mukaisesti Go: lla ei ole monien muiden tunnettujen kielten ominaisuuksia - ja se on itse asiassa vahvuus. Go ei ole olio-suuntautunut, sillä ei ole otsikkotiedostoja tai edelleenlähetysilmoituksia, sillä ei ole tyyppihierarkiaa, sillä ei ole metodin tai operaattorin ylikuormitusta, sillä ei ole geneerisiä tietoja, sillä ei ole virtuaalikone ajon aikana, sillä ei ole poikkeuksia eikä väitteitä.

Toisaalta, mitä Go on, toimii melko hyvin. Se voi koota isoja ohjelmia muutamassa sekunnissa. Siinä on matalat yläpuoliset korutiinit (kutsutaan gorutiineja), joka voi kommunikoida tehokkaasti kanavia. Siinä on rajapinnat ja rajapinnan koostumus. Lisäksi Go tukee ensiluokkaisia ​​toimintoja, korkeamman tason toimintoja, käyttäjän määrittelemiä toimintotyyppejä, funktiolitraaleja, sulkemisia ja useita paluuarvoja - toisin sanoen se tukee toiminnallista ohjelmointityyliä voimakkaasti kirjoitetulla kielellä.

Jos haluat kuunnella jotain edellä mainitsemastani puuttuvista ominaisuuksista, kannattaa ehkä lukea keskustelu kielimuutoksista Go-kielen usein kysytyistä kysymyksistä: Vastaus on yleensä "Ei, koska ..." Yleensä parhaat Go-ohjelmat ovat Suunniteltu alusta alkaen käyttämään Go-kieliominaisuuksia sen sijaan, että se käännettäisiin kirjaimellisesti muilta eri abstrakteja käyttäviltä kieliltä.

Asenna Go

Lyhyet ohjeet Go: n asentamiseen näkyvät lähdetietovarastossa. Voit ladata Go: n binaarijulkaisut Windowsille, MacOS: lle ja Linuxille tai asentaa Go lähteestä. Löydät ohjeet Go from source -sovelluksen asentamiseen GitHubiin.

Jos sinulla on jo Go asennettuna, tarkista nykyinen koontiversio sivun //golang.org/ alaosasta ja tarkista sitten asennettu versio komentoriviltä:

$ go -versio

Jos asennus on vanhentunut, lataa ja asenna nykyinen versio. Käynnistä kaikki avoimet komentokehotteet (Windows) tai päätelaitteet. Uusinta go-versio ja varmista, että versio on odotettuasi; jos ei, muualla saattaa olla asennettuna vanhempi Go-versio, joka on poistettava.

(Ei, en ole vainoharhainen. Onnistuin pääsemään kuvailemaani tilanteeseen asentamalla yhden version Homebrew-ohjelmalla ja asentamalla seuraavan version vähintään kuukauden kuluttua tavallisella MacOS-paketilla. He asentavat eri paikkoihin $ PATH. Kun sain selville, mitä tapahtui, pystyin poistamaan vanhan version Homebrew-ohjelmalla.)

Toinen asennusvaihtoehto, jos haluat tukea ja korvausta ja pystyt maksamaan, on käyttää ActiveGoa.

Kun Go-kääntäjä ja työkalut on asennettu, sinun tulee käydä läpi Go-ohjelman kääntäminen ja suorittaminen, kuten asennusohjelman "Testaa asennuksesi" -osiossa on kuvattu.

Määritä Go-ympäristö

Go-ohjelmoijat pitävät yleensä koodinsa yhdessä työtilassa bin, pkgja src kansioita. Jokaisessa kansiossa projekteilla on tyypillisesti polut, jotka liittyvät Git-arkistoihin, kuten GitHub tai GitLab. Esimerkiksi pidän kaikki Go-kielikoodini alla ~ / työja aseta oma GOPATH ympäristömuuttuja $ HOME / työ. Polku lähdekoodikansioon "hello.go" on $ GOPATH / src / github.com / meheller / hei.

Lisään myös GOPATH / bin hakemistoni polulleni, jotta Go-ohjelmia voidaan käyttää mistä tahansa hakemistosta:

vie GOPATH = $ HOME / työ

vie PATH = $ PATH: $ (go env GOPATH) / bin

Go-kielen apuohjelmat asennetaan sisään GOPATH oletuksena, joten asettamalla GOPATH / bin polun hakemisto myös helpottaa sinun ja Go-tietoisten toimittajien ja IDE: ien löytämistä. Voit asentaa suurimman osan apuohjelmista $ mene hakemaan kun tiedät mitä tarvitset ja niiden arkistopolut. Tietovarastot on yleensä helppo löytää Google-haulla. Joissakin tapauksissa Go-sovelluksen muokkauslaajennus asentaa apuohjelmat (esim. gocode) automaattisesti.

Jos et määritä sitä itse, GOPATH oletuksena $ HOME / mene Unixissa, MacOS: ssa ja % USERPROFILE% / mene Windowsissa.

Käytä kielityökaluja, muokkaajia ja IDE: itä

Useita Go-apuohjelmia asennetaan osana pakettia kääntäjän kanssa. Muut voidaan asentaa Mene hakemaan komento. Käytetyimmät Go-komentorivin apuohjelmat on lueteltu alla.

 
NimiTiivistelmä
mennäHallitsee Go-lähdekoodia ja suorittaa muut tässä luetellut komennot.
cgoMahdollistaa Go-pakettien luomisen, jotka kutsuvat C-koodia.
peiteOhjelma, jonka avulla voidaan luoda ja analysoida kattavuusprofiileja mene testi -coverprofile.
korjataEtsii Go-ohjelmia, jotka käyttävät kielen ja kirjastojen vanhoja ominaisuuksia, ja kirjoittaa ne uudempiin.
fmtFormats Go -paketit. Saatavana myös itsenäisenä gofmt komento yleisemmillä vaihtoehdoilla.
godocPura ja luo dokumentaatiota Go-paketeille.
eläinlääkäriTutkii Go-lähdekoodia ja ilmoittaa epäilyttävistä rakenteista, kuten Tulostaf puhelut, joiden argumentit eivät ole yhdenmukaisia ​​muotoilumerkkijonon kanssa.

Tavallinen tapa kutsua useimmat näistä komennoista ovat alikomennot mennä, esimerkiksi mene fmt. Muille on soitettava go-työkalu alikomento. Asennuksessani go-työkalu palauttaa seuraavan luettelon tunnetuista työkaluista:

$ go -työkalu

addr2line

asm

rakennettu

cgo

koota

peite

dist

dos

korjata

linkki

nm

objdump

pakkaus

pprof

test2json

kiertue

jäljittää

eläinlääkäri

Nämä työkalut on dokumentoitu osana Go-komentojen täydellistä luetteloa. Muuten, varmista GOPATH on asetettu ennen Go-työkalujen tai Go-työkaluja käyttävien Go-editorin laajennusten lisäämistä.

Go-arkistosta ei ole ollut mitään editoria tai IDE-tukea versiosta 1.4 lähtien, mutta on paljon molempia, jotka tietävät Go: sta, joko laatikosta tai lisäosamoduuleilla. Keskustelin monista näistä vuoden 2017 artikkelissa; siellä on myös epävirallinen luettelo, jota ylläpitää Golang-yhteisö.

Suosikkini Go-kielen IDE: t ovat GoLand (esitetty yllä; nimetty uudelleen Goglandista, koska kirjoitin artikkelin vuonna 2017) ja Komodo. Molemmat ovat maksullisia tuotteita, joissa on ilmaisia ​​kokeilujaksoja.

Haluat asentaa Delve for Go -virheenkorjauksen. MacOS: ssa sinun on ehkä lisättävä komentorivin apuohjelmat Xcode-koodiin ja mahdollisesti lisättävä pehmeä linkki virheenkorjauspalvelin, kuten kuvataan 5. kesäkuuta julkaistussa Delve-ongelmaluettelon kommentissa. Juoksu xcode-select --asenna korjaa myös löytämiseen liittyvät ongelmat virheenkorjauspalvelin, vaikkakin raa'alla voimalla.

Suosikkini Go-tietoiset editorit, joissa on graafinen käyttöliittymä, ovat Atom ja Visual Studio Code; molemmat ovat ilmaisia. Jos valitset Atomin, harkitse go-plus- ja go-debug-pakettien lisäämistä; jos valitset Visual Studio Code, harkitse vscode-go: n lisäämistä.

Jos olet vakava Vim- tai Emacs-käyttäjä, pysy kaikin keinoin tietämyksesi kanssa - enkä voinut edes kiusata editoriasi kylmistä, kuolleista käsistäsi. Vim-go lisää Go-kielen tuen Vimille ja go-mode lisää Go-kielen tuen Emacsille.

Tour of Go

Voit oppia melko vähän käymällä läpi kiertueen joko verkossa tai offline. Olettaen, että olet suorittanut Go-kääntäjän ja työkalujen paikallisen asennuksen, voit asentaa kiertueen suorittamaan paikallisesti suorittamalla nämä kaksi komentoa:

$ go hanki golang.org/x/tour/gotour

$ sai

Toisen rivin pitäisi käynnistää verkkopalvelin ja avata selainikkuna. Tämä näyttää täsmälleen samalta kuin online-kiertue, mutta se voi kestää hieman nopeammin, koska se rakentaa ja suorittaa koodinäytteet omalla koneellasi. Paina Ctrl-C komentoikkunassa pysäyttääksesi palvelimen, kun olet valmis.

Kiertue on jaettu kolmeen osaan. Haluan sinun käyvän läpi koko kiertueen, mukaan lukien tietokilpailut, mutta esitän alla olevan osan yhteenvedon ja esitän sinulle kysymyksiä. Annan vastaukset kysymyksiini artikkelin lopussa (ei kurkistamista!).

Siirry kielen perusteisiin

Siirry perusteiden oppitunti 1

Kysymys 1. Tässä esimerkissä on kolme pakettia. Mitä ne ovat ja miten niitä käytetään? Miksi ohjelma palauttaa aina saman numeron, vaikka sitä on rand toiminto?

Huomaa, että en ole kutsunut oppituntia 2. Älä ohita oppitunteja vain siksi, etten ole kommentoinut niitä.

Siirry perusteiden oppitunti 3

Jos suoritat tämän esimerkin, näet virheilmoitukset:

prog.go: 9: 14: ei voi viitata viemättömään nimeen math.pi

prog.go: 9: 14: undefined: math.pi

Kysymys 2. Miksi virheet? Kuinka voit korjata ohjelman?

Siirry perusteiden oppitunti 4

Kysymys 3. Vertaa tätä ilmoitusta C: n vastaavaan. Mikä on erilaista?

Siirry perusteiden oppitunti 8

Kysymys 4. Miksi tämä ohjelma ei heitä virheitä?

Siirry perusteiden oppitunti 10

Kysymys 5. Mikä on tyypin k? Miksi? Jos tyyppi ei ole ilmeinen, katso oppitunti 11 saadaksesi selville, kuinka se näytetään.

Siirry perusteiden oppitunti 12

Tämä oppitunti vastaa kysymykseen, jonka esitin oppitunnissa 8.

Siirry virtauksen ohjaustuntiin 1

Kysymys 6. Kuinka tämä eroaa varten silmukka suosikkikielelläsi? Luuletko, että muut silmukkarakenteet suosikkikielelläsi ovat välttämättömiä? Muuttavatko mielesi seuraavien kolmen oppitunnin lisätiedot?

Siirry virtauksen ohjaustuntiin 7

Ennen kuin suoritat tämän ohjelman, kirjoita työpöytä ja kirjoita muistiin, mitä luulet sen tulostavan. Suorita ohjelma. Olitko oikeassa? Jos ei, mitä et ymmärtänyt?

Siirry virtauksen hallintaan 8. oppitunti

Tämä on sellainen harjoitus, jonka saatat saada tauluhaastattelun alussa. Aikaa itseäsi kun työskentelet. Sano mitä ajattelet ongelman selvittämisen aikana.

Kysymys 7. Virtauksen säätöosan loppuosa on tärkeää ymmärtää. Kun olet käynyt läpi oppitunnit 9–13, selitä Go vaihtaa ja lykätä lauseita tavalla, jonka C-, Java- tai JavaScript-ohjelmoija voisi grokata.

Mene enemmän tyyppejä oppitunti 1

Ennen kuin suoritat tämän ohjelman, kirjoita työpöytä ja kirjoita muistiin, mitä luulet sen tulostavan. Suorita ohjelma. Olitko oikeassa? Jos ei, mitä et ymmärtänyt?

Kuinka sinusta tuntuu, että Go: lla on osoittimia, mutta ei osoittimen laskutoimitusta?

Selaa Lisää tyyppejä -osan läpi, kunnes pääset harjoitukseen oppitunnissa 18. Kysymys 8. Mitä opit Go-matriiseista ja viipaleista? Suorita nyt harjoitus.

Jatka harjoitusta oppitunnilla 23.

Kysymys 9. Selitä Go kartta. Miksi haluat käyttää sellaista?

Viimeistele Lisää tyyppejä -osa.

Kysymys 10. Voidaanko Go: ta käyttää toimivana ohjelmointikielenä käännöksestä huolimatta? Milloin ja miksi käyttäisit sulkimia?

Siirry menetelmiin ja rajapintoihin

Käy läpi kaikki tämän osan 25 oppituntia alkaen kohdasta //tour.golang.org/methods/1.

Kysymys 11. Kun olet valmis, selitä, miten Go: n menetelmät ja käyttöliittymät eroavat C ++ -luokista. Kumpi pidät paremmin? Miksi?

Siirry samanaikaisuuteen

Goretti on yksi Go for concurrency -toiminnon määrittelevistä ominaisuuksista. Yritä samanaikaisuusosion ensimmäisessä oppitunnissa tarkistaa ohjelma (alla) ja kirjoittaa ylös, mitä luulet sen tulostavan.

Suorita ohjelma. Olitko oikeassa? Selitä mitä todella tapahtuu ja miksi.

Kanavat ovat tapa synkronoida gorutiineja implisiittisesti. Yritä seuraavassa oppitunnissa (alla) tarkistaa ohjelma uudelleen ennen sen suorittamista.

Kysymys 12. Miksi tässä esimerkissä on vain yksi kanava, vaikka gorutiinipuheluja on kaksi?

Select-lause antaa gorutiinin odottaa useita viestintäoperaatioita. Missä järjestyksessä lauseet suoritetaan alla olevassa ohjelmassa?

Harjoitus vastaavilla binaaripuilla on toinen, jonka saatat kohdata tauluhaastattelussa. Aika itsesi ja selitä ajattelusi toteuttaessasi ratkaisua. Suorita samalla tavoin web-indeksoijan käyttöönotto ikään kuin olisit haastattelussa.

Vastaukset Go-kysymyksiin

Vastaus 1. Paketit on nimittänyt paketti nykyisen ohjelman lauseke ja tuonti käsky käytetyille ulkoisille paketeille. Tässä yksinkertaisessa ohjelmassa tärkein on ohjelman oma paketti ja se tuo fmt jotta se voi tulostaa, ja matematiikka/rand jotta se voi tuottaa satunnaisluvun.

Eri menetelmät rand Luota satunnaislukujen kelloaikaan, mutta aika on kiinteä saimme ympäristössä. Etsi seurantaharjoituksena paketti ja menetelmä, joka raportoi ajan (vihje: katso täältä, jos juutut kiinni) ja käytä sitä nykyisen ajan tulostamiseen. Suorita tämä useita kertoja saimme ympäristössä, ja myös rakenna ohjelma paikallisesti ja aja se useita kertoja omalla koneellasi.

Vastaus 2. Go-viennit on aina kirjoitettava isoilla kirjaimilla, ja kielen kirjainkoolla on merkitystä. matematiikka on oikea menetelmä.

Vastaus 3. C / C ++ -muuttuja-ilmoituksissa noudatetaan muotoa (esimerkiksi. int i, j, k;), kun taas Go: ssa tyyppi menee muuttujan nimen jälkeen ja voidaan jättää pois niin kauan kuin tyyppi voidaan päätellä. C / C ++: ssa palautustyyppi edeltää funktion nimeä, kun taas Go: ssa se tulee funktioparametriluettelon jälkeen ja ennen funktion runkoa. Kohdassa C / C ++ loppupisteet ovat pakollisia.

Vastaus 4. Se ei heitä virheitä, koska Go-muuttujat, joita ei ole muuten asetettu, alustetaan tyypin nolla-arvoon, esim. 0 tai väärä. Kohdassa C / C ++ kääntäjä ilmoittaa alustamattomat muuttujat.

Vastaus 5.k on kokonaisluku, koska se alustettiin 3.

$config[zx-auto] not found$config[zx-overlay] not found