Go, ook bekend als Golang, is een statisch getypeerde, gecompileerde programmeertaal ontworpen door Google. Het is ontwikkeld om softwareontwikkeling te vereenvoudigen en de productiviteit van programmeurs te verbeteren, vooral voor grootschalige gedistribueerde systemen. Go heeft een schone en minimale syntaxis, efficiënte prestaties en ingebouwde ondersteuning voor gelijktijdigheid, wat het een aantrekkelijke keuze maakt voor ontwikkelaars die werken aan cloudservices, microservices en netwerktoepassingen.
Go werd ontwikkeld door Robert Griesemer, Rob Pike en Ken Thompson bij Google in 2007. De taal werd gecreëerd als reactie op de uitdagingen waarmee de ontwikkelaars werden geconfronteerd met bestaande talen zoals C++ en Java, met name op het gebied van prestaties, afhankelijkheidsbeheer en compilatietijd. De ontwerpers legden de nadruk op eenvoud, efficiëntie en expressiviteit.
Go werd in november 2009 aan het publiek aangekondigd. De vroege versies kregen snel tractie vanwege hun focus op schone syntaxis en gelijktijdigheid, wat aantrekkelijk was voor ontwikkelaars die in grote teams en aan complexe projecten werkten. Bovendien verbeterde de robuuste standaardbibliotheek, die pakketten voor het verwerken van HTTP, JSON en bestand I/O omvatte, de adoptie van de taal verder.
Vanaf oktober 2023 heeft Go een sterk ecosysteem ontwikkeld met een levendige gemeenschap en een verscheidenheid aan bibliotheken en frameworks. Het wordt veel gebruikt bij de ontwikkeling van cloud-native toepassingen en is aangenomen door veel organisaties, waaronder grote technologiebedrijven zoals Google, Dropbox en Netflix. De taal blijft evolueren, met regelmatige updates die de prestaties verbeteren, nieuwe functies introduceren en de ontwikkelaarservaring verbeteren.
Go gebruikt sterke statische typing, wat betekent dat de variabele types bekend zijn op compileertijd. Deze functie helpt veel fouten te vangen voordat het programma wordt uitgevoerd.
var x int = 10
Go heeft ingebouwde ondersteuning voor gelijktijdigheid via goroutines, dit zijn lichte threads die worden beheerd door de Go-runtime. Dit maakt het eenvoudig om gelijktijdige programma's te schrijven.
go func() {
fmt.Println("Hallo vanuit een goroutine!")
}()
Kanalen worden in Go gebruikt om veilig te communiceren tussen goroutines. Ze bieden een manier voor de ene goroutine om gegevens naar een andere te verzenden.
ch := make(chan int)
go func() {
ch <- 42
}()
value := <-ch
Go ondersteunt samengestelde types zoals structs en interfaces, waardoor ontwikkelaars modulaire en herbruikbare code kunnen maken.
type Person struct {
Name string
Age int
}
Switch-statements in Go zijn veelzijdig en kunnen werken met verschillende types, waaronder strings, gehele getallen en zelfs types.
switch x := 2; x {
case 1:
fmt.Println("Een")
case 2:
fmt.Println("Twee")
default:
fmt.Println("Anders")
}
Go staat het inbedden van types toe om codehergebruik te bevorderen en complexere datatypes te creëren.
type Employee struct {
Person // Inbedden van de Person struct
Salary int
}
Defer-statements in Go worden gebruikt om ervoor te zorgen dat een functieaanroep later in de program execution wordt uitgevoerd, meestal voor opruiming.
func main() {
defer fmt.Println("Opruimen!")
fmt.Println("Hallo")
}
De aanpak van Go voor foutafhandeling gebruikt meerdere retourwaarden, waardoor functies zowel een resultaat als een fout kunnen retourneren.
result, err := divide(10, 2)
if err != nil {
fmt.Println("Fout:", err)
} else {
fmt.Println("Resultaat:", result)
}
Slices bieden een flexibele manier om met arrays te werken en zijn krachtiger dan arrays met een vaste lengte.
s := []int{1, 2, 3}
s = append(s, 4) // Append is een ingebouwde functie
Het pakketsysteem van Go ondersteunt codeorganisatie en modulariteit, waardoor code kan worden verdeeld in pakketten die in verschillende projecten kunnen worden hergebruikt.
package main
import "fmt"
Go-programma's worden doorgaans gecompileerd naar machinecode met behulp van de Go-compiler (gc
). De Go-runtime is verantwoordelijk voor het beheren van geheugen, het plannen van goroutines en het bieden van garbage collection.
Verschillende Integrated Development Environments (IDE's) en teksteditors ondersteunen Go-ontwikkeling, waaronder:
Het bouwen van een Go-project is eenvoudig met de Go-toolchain. Veelvoorkomende commando's zijn:
go build
: Compileert de pakketten en afhankelijkheden.go run
: Compileert en voert het Go-programma uit.go test
: Voert tests uit.Projecten zijn doorgaans georganiseerd in mappen, met een go.mod
-bestand voor afhankelijkheidsbeheer.
Go wordt prominent gebruikt in verschillende toepassingen, met name binnen cloud computing, netwerken en microservices. Veelvoorkomende toepassingen zijn:
Go wordt vaak vergeleken met andere talen vanwege zijn unieke kenmerken.
Bij het vertalen van code naar of van Go, overweeg de volgende tips:
Hoewel er beperkte specifieke bron-naar-bron vertalingshulpmiddelen voor Go zijn, kunnen de volgende hulpmiddelen helpen bij de overgang: