Go (Golang) är ett riktigt användbart språk, det vi kallar multipurpose - även om det knappast kan sägas vara universallösningen som man alltid ska använda. Låt oss utforska några viktiga aspekter/features i språket- som fäller avgörandet för vad som är "rätt" och "fel" användningsområden

Bakgrund, användningsområden för Go

Alltså det ÄR ju multipurpose - vi kan göra grafiska ("Windows") applikationer, webbapplikationer, microservices, apier etc etc. Det funkar på Windows, Linux, Mac etc

Och det ÄR kompilerande. Men låt oss kika på ett område där Go generellt inte rekommenderas (av mig i alla fall) :

IOT
Här kommer vanlig C-kod INTE trängas undan av Go - varför? Go runtime är helt enkelt inte lightweight. Eller den är det (en Hello World-applikation kompilerar till 1.7MB) jämfört med Java och C# som har enorma runtimes. Men C är oslagbart där.

PS 1.7MB är dock galet litet om man ser till vad man får. Du får en runtime som "interceptar" alla utgående IO anrop och gör all async/await åt dig. Dvs man har en inbyggd scheduler/trådhanterare som bara lägger aktiva s.k Goroutines på OS-trådar. Dvs vi behöver inte tänka på asynkrona anrop nånstans. Hela Goroutineimplementationen (tänk lightweight threads - med små fast växande stackar) är ju också vad vi får med i runtime.

Men sanningen är ju också att Golang har ju garbage collector, dvs realtime eller "near realtime" applikationer kommer aldrig att gå att bygga. En garbage collector kommer ge inkonsistent prestanda. Så är det alltid...

Så sammanfattning;

Vad ska vi bygga med Golang:

  • Web apier
    (språket är ju designat för just det)
  • Web applikationer (html)
    (språket är ju designat för just det)
  • Services, tjänster, batchrutiner
  • Consoleapplikationer
    Japp verkligen! Tänk alla kubernetes/docker tools etc

Vad ska vi inte bygga med Golang:

  • IOT
    Pga stor runtime
  • Realtidsapplikationer
    Applikationer där latency är helt oacceptabelt. GC Sweeps är inte gratis
Sugen att lära dig mer om webutveckling med Golang? Vår Go kurs kommer ge dig såväl teoretisk som praktisk insikt i vad som är möjligt, vad är best practice, vilka problem brukar kunna uppstå etc.