Vad kan jag använda Golang till?
Blog Post by Stefan Holmberg
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