Go er et fantastisk programmeringsspråk. Det kommer også med en omfattende verktøykjede. Mange utviklere bruker bare enkle tekstredigerere med eller uten plugins for å skrive Go-kode, men mange andre foretrekker å bruke riktige IDEer (integrerte utviklingsmiljøer).
I denne opplæringen lærer du om den nåværende tilstanden for Go IDEs og er klar til å velge våpen.
Jeg var alltid en stor fan av IDEer. Tidlig i karrieren brukte jeg Microsofts Visual Studio for C / C ++-utvikling og C #. Jeg har brukt NetBeans for en kort stint av Java-utvikling. Jeg har brukt JetBrains PyCharm for Python-utvikling, og i dag bruker jeg JetBrains 'Gogland for Go-utvikling.
Jeg jobber vanligvis på store programvare systemer som består av flere prosjekter med tusenvis av filer. Jeg trenger mye hjelp med store kodebaser. Her er de viktigste grunnene til at jeg liker IDEer så mye:
Med en god IDE kan du organisere koden din hierarkisk, se og navigere den med letthet, og søk også koden din raskt. IDE vil gjøre mye mer enn bare tekstsøk og lar deg filtrere basert på språkspesifikke konstruksjoner (for eksempel bare vis klasser eller grensesnitt med et bestemt navn).
Integrert testing er også avgjørende. Jeg bruker mesteparten av min utviklingstid på tester - enten skrive dem, prøve å få dem til å passere, eller undersøke hvorfor tester plutselig mislyktes. En god IDE med integrert testing vil la deg kjøre tester på en selektiv måte (alt, bare ett prosjekt, bare mislykkede tester fra forrige runde), vil markere feil, og lar deg hoppe raskt til riktig sted i koden for å fikse eventuelle problem.
Dette er trolig den viktigste funksjonen for meg. Jeg elsker integrerte debuggere. Jeg vil kunne legge til et brytepunkt (inkludert betingede brytepunkter), se stablingssporet og se variablene i hver ramme.
For bonuspoeng (takk PyCharm), liker jeg å ha en interaktiv konsolløkt når et brytepunkt treffer. Alternativene til printf debugging (krever endring av koden og gjenoppbygging) eller visning av loggfiler (ofte ikke nok granularitet eller mye støy) er mye mer frustrerende og mindre produktive. Selv frittstående debuggere som gdb kommer ikke nær produktiviteten til en god integrert debugger.
Gogland er min nåværende Golang IDE. Det er et veldig ungt produkt, fortsatt i tidlig forhåndsvisning, men jeg anser det fortsatt som den mest komplette og integrerte Go IDE. Den er bygget på det sterke grunnlaget for JetBrains, så det er ekstremt robust og funksjonelt.
Goglands kode redaktør er fantastisk. Her er noen av dens evner:
Gogland debugger er utmerket. Den er bygget på toppen av Delve, som brukes av andre IDEer vi dekker også. Den bruker de kjente JetBrains feilsøkingskonfigurasjonene for å kontrollere alt om en feilsøkingsrunde, for eksempel det utførte binære, miljøvariablene, arbeidskatalogen og kommandolinjeprinsene.
Du kan angi bruddpunkter, betingede bruddpunkter og klokker. Når et bruddpunkt blir rammet, kan du observere stakkespor og de lokale variablene i hver ramme. Dessverre vises globale variabler ikke og er ofte nødvendige i Go.
Jeg hadde ett problem med debuggeren hvor breakpoints blir truffet for tidlig! Vurder følgende Go-kode:
x: = 1 y: = 3 z: = x + y fmt.Println (z)
Noen ganger, hvis jeg legger et bruddpunkt på den siste linjen, ville det treffe, men verdien av z ville være 0, i stedet for 4. Hvordan kan det være? Det viser seg at debuggeren ble forvirret på en eller annen måte. Hvis jeg fortsetter å gå gjennom koden, hopper den tilbake til z: = x + y
, tilordne 4 til z, og gå deretter til siste linje og skriv ut 4 på skjermen.
Jeg kastet bort et par timer på å prøve å feilsøke et komplisert koden, ikke skjønner at jeg ikke alltid fikk det riktige bildet. Til slutt fant jeg ut hva som skjedde og bare ignorert den falske tidlige utløsningen av breakpoints.
Jeg er ikke sikker på om det er et Delve- eller Gogland-problem, men jeg er sikker på at de vil fikse det snart. Husk at det bare er en tidlig forhåndsvisning.
Testløperen lar deg kjøre, stoppe og starte testene. Jeg var i stand til å bruke den vellykket til å kjøre og feilsøke enhetstester, samt integreringstester ved hjelp av både Gos testpakke og et BDD-testrammebilde som ginkgo.
Go kommer med ulike verktøy, og Gogland integrerer dem rett inn i IDE. Du kan påkalle verktøy fra menyen "Kode | Go Tools". Den innebygde koden formatering av Gogland benytter standard "go fmt" verktøyet.
Gogland erverver det modne kildestyringsstyringssystemet for andre JetBrains produkter. Jeg har brukt primært git support, som tillater styring av flere prosjekter, utmerket visning av grener, flere endringssett og mer. Andre kildekontrollsystemer som Mercurial og SVN støttes også, via ekstra plugins.
Gogland gir en innebygd terminal hvis du trenger å kjøre noen kommandoer. Det er hyggelig å være innenfor IDE og kunne se på eller kopiere fra / til redigeringsrutene uten å bytte vinduer helt.
Gogland kommer med tonnevis av innebygde funksjoner, men det er fullt uttrekkbart, og mange av de innebygde funksjonene er faktisk forhåndsinstallerte plugins. Du kan installere mange nyttige plugins, og du kan utvikle dine egne plugins hvis du ønsker det.
Visual Studio Code er en utvidbar åpen kildekoden editor utviklet primært av Microsoft (med mange bidrag fra samfunnet). Den er basert på Electron, som igjen er basert på Chromium. Visual Studio Code støtter mange språk og opprinnelig fokusert på webutvikling. Den har sterk støtte for Go-utvikling, inkludert integrering av alle Go-verktøyene og Delve debuggeren via en dedikert utvidelse. Du må installere noen Go-pakker og verktøy for å komme i gang.
Visual Studio Code tilbyr også innebygd git-integrasjon, hierarkisk mappe / filutforsker og et tabbedgrensesnitt.
IntelliSense-støtten (autofullføring, viser parametertyper og dokumentasjon) er flott og gir en veldig hyggelig redigeringsopplevelse. Den integrerte debuggeren (bruker også Delve under hetten) er veldig godt utført og samsvarer med Goglands debugger.
Visual Studio Code er veldig responsiv og rask. Her er dens store funksjonsliste:
LiteIDE er veldig uvanlig. Det var den første seriøse Go IDE, startet tilbake i 2011/2012, og den fortsetter å være sterk. Det er et C ++ Qt-program, og det har et tilpasset utseende. I likhet med Gogland og Visual Studio Code, bruker den Go-verktøyene og Delve debugger til å tilby språktjenester (selv om det startet med gdb debugger før Delve var klar).
Totalt sett er det en fullverdig IDE, men det føles ikke så polert. Så vidt jeg kan fortelle, er dette ganske mye en enmans innsats, noe som er ekstraordinært. Her er en sammenbrudd av LiteIDE-funksjonene.
Wide er interessant fordi det er en dedikert Golang web-basert IDE. Fokuset er på samarbeidsutvikling, og den er laget for lag. Utvikleren er kinesisk, og mye av dokumentasjonen er på kinesisk, så det kan ikke være egnet for alle. Det er definitivt ikke på nivå med de andre IDEene når det gjelder egenskaper og integrasjon.
Det er mange generelle IDEer som støtter mange programmeringsspråk og har lagt til støtte for Go-språket også. Jeg er ikke en stor fan av slike miljøer. Jeg tror at et integrert miljø må ha dypt integrerte språkspesifikke kroker. Det er vanskelig å implementere som en enkel plugin (selv om du kanskje hevder at dette er akkurat hva VS Code gjør).
Noen populære utviklingsmiljøer som har lagt til Go-støtte, er:
Go er et enkelt språk. Mange mennesker føler seg veldig produktive bare ved hjelp av en tekstredigerer, muligens med noen ekstra Go-plugins. Jeg ser ikke de virkelig integrerte utviklingsmiljøene. Men det er fornuftig hvis du har mange års erfaring med tekstredigeringsprogrammet, du har allerede tilpasset det til din smak, og du bruker det til mange andre oppgaver. Her er en liste over noen av de mer populære tekstredigererne og deres Go-plugins:
Med følgende plugins:
Med GoSublime-plugin
Med en mengde Go-plugins.
Go har kommet langt og har et robust økosystem som inneholder mange muligheter for utviklingsmiljøet. Delve debugger gir en fantastisk interaktiv feilsøking og brukes av de fleste topp IDEer. Spill rundt med disse IDEene og finn den som passer deg best.
Den rette IDE kan gjøre jobben med Go enda morsommere.