Webapplikasjoner er en del av livet i disse dager. De Gå språk, av google, er et nyttig språk for å lage web-baserte applikasjoner. Jeg skal vise deg hvordan du kommer i gang med å gå på en Mac.
Den enkleste måten å installere Gå programmeringsspråk er ved Hjemme brygget. Hvis du ikke har installert Hjemme brygget ennå, opplæringen Homebrew Demystified: OS Xs Ultimate Package Manager vil vise deg hvordan.
I en terminal, skriv inn:
brygge installasjon gåFinne farten Installere
For å finne plasseringen av gå installer katalog, skriv denne kommandoen inn i ditt terminalprogram:
ls -la 'som går'
Du bør få dette resultatet:
lrwxr-xr-x 1 raguay hjul 25 mai 14 15:11 / usr / local / bin / go -> ... /Cellar/go/1.2.2/bin/go
Dette viser at hovedinstallasjonen av Gå er /usr/local/Cellar/go/1.2.2
. Du må konfigurere miljøvariabelen GOROOT å være libexec katalog over den katalogen.
Opprett katalogen i hjemmekatalogen gå. De gå Språket lagrer alle nedlastede pakker der. Legg til i din .bashrc fil og / eller .zshrc fil denne linjen:
eksporter GOPATH = "/ Brukere // gå "eksport GOROOT =" / / Libexec"
Hvis du bruker fisk, legg dette til din config.fish fil:
sett -xg GOPATH "/ Brukere // gå "sett -xg GOROOT" / / Libexec"
For å teste gå skriver du inn følgende i en terminal:
gå versjon
Det skal skrive ut versjonen av gå, som er installert. På systemet mitt akkurat nå viser det gå versjon go1.2.2 darwin / amd64
.
For å se etter nyere versjoner, la Hjemme brygget finne ut det. På kommandolinjen skriver du:
bryg oppdatering bryg oppgradering
De Oppdater kommandoen vil få en liste over oppdaterte programmer. De Oppgradering kommando gjør den faktiske oppgraderingen. På den måten må du aldri jakte på de forskjellige nettstedene for å finne oppdateringer.
Nå som Gå er på systemet, må du sette opp redigereren. jeg bruker Sublim tekst 3, Vim, og Emacs mye. Derfor må jeg få redaktørene mine til å få fart med Gå.
Til Sublim tekst, det er lett. Installer Package Manager for Sublime Text. Dette muliggjør enkle pakkeinstallasjoner. Pakken du vil installere er goSublime. goSublime gir deg Gå Språk syntaksutheving og a Gå bygge system.
Å installere Gå syntaksutheving for Emacs, installer eLisp-rutinene som finnes i $ GOROOT / Diverse / emacs til emacs elisp-mappen din. Til Emacs For å laste de nye filene, legger du til denne linjen i .emacs fil i hjemmemappen:
(krever "go-mode-load")
Støtten til Vim tar mer arbeid. I en terminal, kjør disse bash kommandolinjer:
mkdir -p $ HOME / .vim / ftdetect mkdir -p $ HOME / .vim / syntaks mkdir -p $ HOME / .vim / autoload / go ln -s $ GOROOT / misc / vim / ftdetect / gofiletype.vim $ HJEM / .vim / ftdetect / ln -s $ GOROOT / misc / vim / syntaks / go.vim $ HOME / .vim / syntaks ln -s $ GOROOT / misc / vim / autoload / go / complete.vim $ HOME / .vim / autoload / go echo "syntaks på" >> $ HOME / .vimrc
Den siste linjen er bare nødvendig hvis du ikke allerede har syntaks på i din .vimrc.
Tradisjonelt er biblioteker det grunnleggende om modulariseringskoden for gjenbruk. I gå, Biblioteker er pakker. Go-språket leveres med mange pakker innebygd. Du kan skanne gjennom dem på pakkesiden. Det er også mange tredjeparts pakker og prosjekter.
For Tittel Case Server, Jeg skal bruke tredjepartspakken web.go. Det er en enkel webserver rammeverk som forenkler opprettelsen av web-baserte applikasjoner i Gå. Hvis du vil laste den pakken på systemet, skriver du inn følgende:
gå og installer github.com/hoisie/web
De installere kommandoen tar et argument som er en webadresse, uten http: //, for en pakke å laste ned. Den er plassert i $ GOPATH-katalogen som ble opprettet tidligere.
Tittel tilfelle er en av de mest kresne ting. Noen mennesker liker bestemte ord alltid små bokstaver. Andre tror ord skal være alt tittel tilfelle. Derfor, for å gjøre det riktig (som de fleste pakkerutiner ikke gjør), må du sjekke hvert ord mot to ordbøker for å få alt riktig. Det gjør et flott nybegynnerprosjekt i et nytt programmeringsspråk.
// // Pakke: Hoved // // Beskrivelse: Dette er hovedpakken for goTitleServer. // Dette er en enkel webteknologi basert tittel sak // tekstserver. // pakke hoved
De // symbolet viser en kommentar. Kompilatoren ignorerer alt etter det i linjen. Jeg liker å kommentere alt. Når du leser koden år senere, hjelper kommentarene deg til å huske hvordan programmet fungerer.
Linjen etter kommentarene er pakkeerklæringen. Hver fil som Gå bruk må være en del av en pakke. Hvert program har bare en hoved- pakke som må ha hoved() funksjon. Det forteller kompilatoren hvor du skal begynne å kjøre programmet.
// // Importer biblioteker som vi trenger for serveren. // import ("github.com/hoisie/web" "os" "strenger")
For å gjøre bruk av pakker, må du importere dem. Alle pakkene som brukes må være i denne utsagnet. Jeg inkluderer de to basispakker av os for operativsystemfunksjonene, og strenger for å manipulere strenger. De github.com/hoisie/web laster web.go pakke for å lage webserveren.
// // Funksjon: homePage // // Beskrivelse: Denne funksjonen vil servere hjemmesiden for å skrive inn strengen // for å konvertere. // func homePage () string return 'Tittel Case Server Tittel Case Server
'
Denne funksjonen oppretter hjemmesiden. Dette er hva serveren gir til en nettleser som ber om forsiden av nettstedet. De func kommandoen er en funksjonsdeklarasjon. De hjemmeside er navnet på funksjonen. De () forteller kompilatoren at denne funksjonen ikke tar noen innganger. De string etter at parentesen forteller kompilatoren at funksjonen vil returnere en streng.
Alt inne i er koden for funksjonen. Denne funksjonen er enkel: komme tilbake den angitte strengen til den som ringer til funksjonen. I gå, du kan sitere strenge med "", ", og ". Jeg brukte den siste her til å ha en linjestreng som ikke er behandlet i det hele tatt. Du kaller det en bokstavelig streng.
Ved å bruke den bokstavlige sitatmetoden, kan jeg opprette nettsiden akkurat som jeg normalt ville. Ingenting inne i merkene blir behandlet av kompilatoren. Den kopieres direkte inn i programmet, og programmet returnerer det til nettleseren på forespørsel.
// // Funksjon: titleCase // // Beskrivelse: Dette tar en streng og konverterer den til tittelsaksel. Det returnerer deretter strengen. // // Input: // val resten av webadressen hvis gitt noen. // func titleCase (ctx * web.Context, val string) streng // // Få strengen til å konvertere og splitte den opp av mellomrom. // ord: = strings.Split (ctx.Params ["text"], "") // // Mengden ord som skal være små bokstaver alltid, med mindre det er det første ordet // av tittelen. // lavere: = [...] streng "til", "en", "og", "til", "som", "men", "av", "for", "om", "inn" "på", "eller", "er", "med", "a", "av", "av" / / En rekke ord som alltid skal være helt overordnet. // øvre: = [...] streng "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" "HTML", "CSS", "AT & T", "PHP" // // For hvert ord i tittelen. // for jeg, _: = rekkeviddesord // // Anta at ordet ikke er i store eller små bokstaver. // up: = false low: = false // // Gå gjennom hvert ord i små bokstaver. // for j, _: = rekkevidde lavere hvis strenger.ToLower (ord [i]) == lavere [j] // // Det samsvarer. Pass på at ordet i arrayet er det samme. // Sett opp flagget som sant. // ord [i] = lavere [j] lav = sant // // Gå gjennom hvert ord i store bokstaver. // for k, _: = rekkevidde øvre hvis strenger.ToUpper (ord [i]) == øvre [k] // // Det samsvarer. Pass på at ordet er arrayet det samme. // Sett lavflagget til ekte. // ord [i] = øvre [k] opp = true // // Hvis ordet ikke var i øvre eller nedre matrise, gjør du en normal // tittel case konvertering. Dette gjør det første bokstaveret store og alle // de andre bokstavene små bokstaver. // hvis (! opp) && (! lav) ord [i] = strings.Title (ord [i]) // // Pass på at det første ordet er tittel sak! // ord [0] = strings.Title (ord [0]) // // Returner tittelen ved å bli med alle ordene med et mellomrom. // return strings.Join (ord, "")
Denne koden gjør arbeidet med å oversette en streng gitt til webserveren inn i tittel saksekvivalenten.
De ctx * web.Context, val streng forteller kompilatoren at denne funksjonen mottar to variabler. Den ene er en peker til web.Context datastruktur definert i web.go pakke. Den andre er en streng. Du erklærer en variabelinngang med et navn og typen av variabel.
De * symbolet viser en peker. En peker er en adresse til stedet i minnet for datastrukturen. Gå følger C data pointer formater.
Den første setningen får parameteren heter tekst at nettleseren går til serveren og deler den opp med mellomrom. De strings.Split kaller Dele fungere inne i strenger pakke. Du kan tenke på pakker som ligner på objekter i C ++. Du ringer dem ved hjelp av a . mellom pakkenavnet og funksjonsnavnet.
I hver pakke er hver funksjon som starter med en bokstav tilgjengelig fra utsiden av pakken. Hver funksjon som starter med små bokstaver, er kun tilgjengelig fra innsiden av pakken.
Når strings.Split funksjonen deler opp en streng av separatoren, den returnerer en rekke strenger. Utgangen tilordnes deretter til variabelen ord. For å opprette en ny variabel, må den første gangen den brukes, bruke en : = å tilordne det. Hvis du vil endre den samme variabelen til en annen serie med strenger, vil du bruke = operatør.
Deretter opprett to arrays for de forskjellige ordlister. Nedre er for alle små bokstaver, og øverste for alle store ordene. De [...] forteller kompilatoren å få antall oppgaver fra dataene. På den måten kan du legge til ord i listen uten å bekymre deg for å øke tallet. De string forteller kompilatoren at hver oppføring i gruppen er en streng.
jeg bruker for ... rekkevidde løkker til sekvens over arrays. Den første går over hvert ord som er gitt i inngangen, mens to andre sløyfer går gjennom hver ordliste for hvert ord. Den konverterer først ordet til små bokstaver, sammenligner det med hvert ord i Nedre ordbok. Hvis det er en kamp, tvinger det ordet til helt små bokstaver ved å tilordne den ordposisjonen til strengen i ordboken. Det gjør så nøyaktig det samme ved hjelp av øverste ordbok.
Hvis ordet var ikke i begge ordbøker, så utfører den strings.Title funksjon til ordet. Dette tvinger det første bokstaven til å være store og resten av små bokstaver.
Til slutt gjorde det første ordet tittel tilfelle uansett hva. De strings.Join funksjonen samler rekke strengene ved hjelp av et mellomrom. Den returnerer resultatene til den som ringer til funksjonen.
// // Funksjon: killServer // // Beskrivelse: Denne funksjonen stopper serveren. // func killServer () streng os.Exit (0) return ""
De killServer funksjonen gjør akkurat hva navnet tilsier: dreper webserveren. Det omslutter et anrop til os.Exit () fungere i os pakke.
// // Funksjon: hoved // // Beskrivelse: Dette er hovedfunksjonen som kalles programkørsel. // func main () // // angi titlecase webadressen til riktig funksjon. // web.Get ("/ titlecase /(.*)", titleCase) // // Sett opp en sti for å drepe serveren. // web.Get ("/ kill", killServer) // // send hjemmesiden til riktig funksjon. // web.Get ("/", homePage) // // Kjør serveren på den lokale maskinen i port 9911 // web.Run ("127.0.0.1:9910")
De hoved- funksjon bruker web.Get å sette opp Få protokollruter for hjemmesiden, kill-siden og tittel-omformer-rutinen. De web er den web.go pakke som vi lastet ned tidligere. De Få definerer a HTML Get be om. Det er også Sette, Post, og Slett operatører som du kan definere.
De web.Run setningen starter webserveren på den oppgitte adressen og porten. De web.go pakken tar over derfra og kaller rutinene dine når adressene definert blir forespurt.
Nå som programmet er ferdig, må du kompilere det. Å kompilere en Gå program, forteller du det å bygge filen med hovedfunksjonen. For å kompilere dette programmet skriver du:
gå bygge goTitleServer.go
Når det er ferdig, vil du ha goTitleServer i katalogen. Det er det fulle programmet. Du kan starte det med:
./ goTitleServer
Åpne deretter en nettleser til http://127.0.0.1:9910. Du bør se dette:
goTitleServer RunningSkriv inn din streng i Tekst som skal løses: tekstboksen, trykk Konvertere, og den konverterte strengen vil vises i resultater: tekstboks.
Jeg legger naturligvis dette programmet inn i en alfred arbeidsflyt. Det er en del av nedlastingen sammen med goTitleServer.go fil. Dette gir et eksempel på å bruke serveren uten nettleser. Den bruker følgende bash-kode for å spørre serveren:
query = 'echo' query "| sed -e 's / / + / g "; krølle" http: // localhost: 9910 / titlecase /? text = $ query ";
Den første linjen endrer alle mellomrom i spørsmål streng til +. De curl kommandoen er en standard unix-kommando for å få informasjon fra en webserver. Kommandolinjen vil bruke curl kommandoen en url forespørsel som nettsiden ville skape for å sende til den. Hva returneres i resultatene fra konvertering av strengen til tittelsaksel.
De Alfred spør kommandoer for denne arbeidsflyten er:
tis: lansering-Denne kommandoen starter serveren. Du må lansere serveren før du kan konvertere.
TCS: konvertere-Denne kommandoen tar en streng som skal konverteres. Arbeidsflyten viser resultatet i et varsel og kopierer det til utklippstavlen.
TCS: drepe-Denne kommandoen dreper webserveren.
Det er også en hurtigtast som du må tilordne for å ta det gjeldende valget og kjøre det gjennom tittelserveren og lime det inn igjen på plass.
Nå som du har systemet konfigurert til å skrive og kompilere webapplikasjoner ved hjelp av Gå, du må begynne å skrive noen! Ta denne kodebasen og utvide den til flere tekstbehandlingsfunksjoner for å lage en god tekstbehandlingsserver.