Teknologi & innovasjonPublisert: 8. mai 202510 min lesing

Go (Golang): enkel, rask og cloud-native programmering

Guide til Go-programmeringsspråket – historikk fra Google 2009, goroutines og concurrency, bruksområder og norsk bruk.

Norsk Næring
Norsk NæringRedaksjon
Go er designet for enkelthet og skalerbarhet, og er ryggraden i mye cloud-native infrastruktur.

Go er designet for enkelthet og skalerbarhet, og er ryggraden i mye cloud-native infrastruktur.

Komplett guide til Go (Golang): historikk fra Google 2009, goroutines og concurrency-modellen, backend-utvikling, cloud-native bruksområder og norsk adopsjon.

Annonse

Historikk: Googles svar på kompleksitet

Go ble skapt av Robert Griesemer, Rob Pike og Ken Thompson hos Google, og ble offentlig annonsert i november 2009. Bakgrunnen for Go var frustrasjon med de eksisterende programmeringsspråkene hos Google – C++ tok svært lang tid å kompilere, Java hadde for mye boilerplate, og Python var for langsomt. Google trengte et språk som var enkelt å skrive, raskt å kompilere og effektivt å kjøre på store servere.

Go 1.0 ble lansert i mars 2012 med en sterk kompatibilitetsgaranti: kode skrevet for Go 1.0 skal kompilere og kjøre korrekt på alle fremtidige Go 1.x-versjoner. Denne garantien har vært holdt til punkt og prikke og gjør Go til et svært stabilt valg for produksjonssystemer.

Goroutines og concurrency-modellen

Det mest karakteristiske trekket ved Go er concurrency-modellen basert på goroutines og channels. En goroutine er en lettvekts-tråd administrert av Go-runtimen – ikke av operativsystemet. Du kan kjøre millioner av goroutines i ett enkelt Go-program med minimalt minneavtrykk (startpris ca. 2 KB per goroutine).

Channels er den primære måten goroutines kommuniserer på: de sender og mottar verdier via typed channels. Dette følger filosofien «Del ikke minne ved å kommunisere; kommuniser ved å dele minne». Go-runtimen schedulerer goroutines på tilgjengelige CPU-kjerner, og Go er designet for å utnytte flerkjerne-prosessorer maksimalt uten at utvikleren trenger å bekymre seg for locking og mutexes i de fleste tilfeller.

"Do not communicate by sharing memory; instead, share memory by communicating."

— Go-designprinsipp, Rob Pike

Språkdesign: enkelhet som styrke

Go er bevisst designet for å være enkelt. Språket har svært få nøkkelord (25 totalt), ingen klasser (men structs og methods), ingen implisitt arv (men interfaces), og ingen exceptions (men error-verdier). Go har automatisk minnehåndtering via garbage collector, men GC-pausen er svært lav (<1ms på moderne systemer).

Denne enkelheten er en styrke i team-miljøer: ny Go-kode er lett å lese og forstå for alle teammedlemmer, uavhengig av erfaring. Go har innebygd formattering (gofmt) som eliminerer diskusjoner om kodestil.

  • Kun 25 nøkkelord – kompakt og leselig
  • Statisk typet med god type inference
  • Innebygd testing med go test
  • gofmt: én offisiell kodeformatering
  • Raske kompileringstider (sekunder, ikke minutter)
  • Enkelt deployment: ett binærfil uten dependencies
Annonse

Bruksområder: backend og cloud-native

Go er spesielt populært for backend-tjenester og cloud-native infrastruktur. Docker, Kubernetes, Terraform, Prometheus, Grafana, Traefik og Consul er alle skrevet i Go – dette viser bredden av infrastruktur-verktøy som stole på Go. Mange norske teknologiselskaper bruker Go for API-servere, mikrotjenester og databehandlingsrørledninger.

Go er et utmerket valg for REST-APIer og gRPC-servere. Standardbiblioteket har en svært god HTTP-server (net/http), og tredjepartspakker som Gin, Echo og Fiber gjør det enda enklere å bygge produksjonsklare web-APIer.

DockerSkrevet i Go
KubernetesSkrevet i Go
TerraformSkrevet i Go
PrometheusSkrevet i Go
GitHub Copilot backendDeler skrevet i Go
Go-brukere globalt (2024)Over 3 millioner utviklere

Go-økosystemet: moduler og pkg.go.dev

Go bruker moduler (Go modules) for avhengighetshåndtering, introdusert i Go 1.11 og standard fra Go 1.16. pkg.go.dev er det offisielle pakkedirektoriet med automatisk generert dokumentasjon for alle offentlige Go-pakker. Dokumentasjonssystemet er eksemplarisk – alle eksporterte funksjoner, typer og metoder dokumenteres automatisk.

Populære tredjepartspakker inkluderer gin (web framework), gorm (ORM), sqlx (SQL), cobra (CLI), viper (konfigurasjon), zap (logging) og testify (testing). Go-pakker er generelt enkle og fokuserte – i tråd med Unix-filosofien om å gjøre én ting godt.

Go i norsk teknologibransje

Go er et populært valg blant norske teknologiselskaper, spesielt innen fintech, energi-tech og skybaserte løsninger. Selskaper som Cognite, Ardoq, Sparebank 1 og Vipps bruker Go i deler av sin teknologistack. Go er særlig attraktivt for norske selskaper som bygger skalerbare API-er og mikrotjenester.

Norske Go-utviklere er organisert gjennom Oslo Go Meetup og aktive Discord- og Slack-kanaler. Go-kompetanse etterspørres kraftig i det norske arbeidsmarkedet, særlig for backend-roller hos scale-ups og teknologiselskaper.

Læring og ressurser

Go har en veldig lav inngangsterskel – de fleste erfarne utviklere er produktive i Go innen 1–2 uker. Det offisielle Tour of Go (go.dev/tour) er et utmerket interaktivt startpunkt. Go by Example (gobyexample.com) gir konkrete kodeeksempler for alle vanlige use cases.

For dypere læring anbefales bøkene «The Go Programming Language» av Donovan og Kernighan, og «Learning Go» av Jon Bodner. Til norsk bruk er «Effective Go» (offisielt dokument på go.dev) viktig lesning for å forstå idomatic Go-kode.

  • Tour of Go – offisiell interaktiv tutorial
  • Go by Example – kodeeksempler på engelsk
  • The Go Programming Language (bok) – Donovan & Kernighan
  • Learning Go (bok) – Jon Bodner
  • GopherCon-foredrag på YouTube
  • Exercism.io Go-spor

Gos fremtid

Go er i aktiv utvikling med nye features som generics (lagt til i Go 1.18, 2022), forbedret error handling og stadig bedre GC-ytelse. Go 2 er ikke planlagt som et fullstendig nytt språk, men som en gradvis evolusjon av Go 1.x innen kompatibilitetsrammen.

For norske utviklere er Go et svært solid og fremtidsrettet valg for backend-utvikling og cloud-native systemer. Kombinasjonen av enkelthet, ytelse og utmerket concurrency-støtte gjør Go til et av de mest verdifulle språkene å lære i 2025.

Annonse

Ofte stilte spørsmål

Hva handler «Go (Golang): enkel, rask og cloud-native programmering» om?

Komplett guide til Go (Golang): historikk fra Google 2009, goroutines og concurrency-modellen, backend-utvikling, cloud-native bruksområder og norsk adopsjon.

Hva bør du vite om historikk: Googles svar på kompleksitet?

Go ble skapt av Robert Griesemer, Rob Pike og Ken Thompson hos Google, og ble offentlig annonsert i november 2009. Bakgrunnen for Go var frustrasjon med de eksisterende programmeringsspråkene hos Google – C++ tok svært lang tid å kompilere, Java hadde for mye boilerplate, og Python var for langsomt. Google trengte et språk som var enkelt å skrive, raskt å kompilere og effektivt å kjøre på store servere.

Hva bør du vite om goroutines og concurrency-modellen?

Det mest karakteristiske trekket ved Go er concurrency-modellen basert på goroutines og channels. En goroutine er en lettvekts-tråd administrert av Go-runtimen – ikke av operativsystemet. Du kan kjøre millioner av goroutines i ett enkelt Go-program med minimalt minneavtrykk (startpris ca. 2 KB per goroutine).

Hva bør du vite om språkdesign: enkelhet som styrke?

Go er bevisst designet for å være enkelt. Språket har svært få nøkkelord (25 totalt), ingen klasser (men structs og methods), ingen implisitt arv (men interfaces), og ingen exceptions (men error-verdier). Go har automatisk minnehåndtering via garbage collector, men GC-pausen er svært lav (<1ms på moderne systemer).

Hva bør du vite om bruksområder: backend og cloud-native?

Go er spesielt populært for backend-tjenester og cloud-native infrastruktur. Docker, Kubernetes, Terraform, Prometheus, Grafana, Traefik og Consul er alle skrevet i Go – dette viser bredden av infrastruktur-verktøy som stole på Go. Mange norske teknologiselskaper bruker Go for API-servere, mikrotjenester og databehandlingsrørledninger.

Hva bør du vite om go-økosystemet: moduler og pkg.go.dev?

Go bruker moduler (Go modules) for avhengighetshåndtering, introdusert i Go 1.11 og standard fra Go 1.16. pkg.go.dev er det offisielle pakkedirektoriet med automatisk generert dokumentasjon for alle offentlige Go-pakker. Dokumentasjonssystemet er eksemplarisk – alle eksporterte funksjoner, typer og metoder dokumenteres automatisk.

Norsk Næring
Skrevet avNorsk NæringRedaksjon

Norsk Næring er en del av redaksjonen i Norsk Næring og dekker teknologi & innovasjon. Redaksjonen kvalitetssikrer alt innhold mot oppdaterte og pålitelige kilder.

Redaksjonell merknad: Dette innholdet er utarbeidet av Norsk Næring med hjelp av kunstig intelligens og kvalitetssikret av redaksjonen. Informasjonen er ment som generell veiledning og erstatter ikke profesjonell rådgivning. Feil eller unøyaktigheter? Kontakt oss på help@norsknæring.no.