Dagens statistik

Gennemførte øvelser
-
Indtastede tegn Indskrevne ord
-
Øvelsestid
-

Samlet statistik

Gennemførte øvelser
-
Indtastede tegn Indskrevne ord
-
Øvelsestid
-

Lektion i tifingersystemet: Programmering i sproget Go

Tifingersystemet er vigtigt i programmering. Du er mere effektiv, når du bruger hurtige skriveteknikker til at skrive kode i programmeringssproget Go.

Lad os lære mere om sproget Go og tifingersystemet, når vi programmerer i Go.

Programmering i Go og tifingersystemet

Programmering i Go og blindskrift hænger naturligt sammen. Go har et sæt faste syntaksregler og specialtegn, der kan være udfordrende, når man skriver hurtigt. Blindskrift betyder at skrive uden at kigge på tastaturet, og i konteksten af Go er det vigtigt, fordi sproget kræver nøjagtighed: en manglende krølleparentes eller en fejl i en operator kan give en kompileringsfejl.

Hvad er karakteristisk ved Go's syntaks?

Go er et kompileret sprog eng.: compiled language med en ren og minimalistisk stil. Kildekoden starter altid med en package-deklaration. Importer kan erklæres enkeltvis eller samles i blokke. Funktioner erklæres med nøgleordet func og bruger krølleparenteser {} til at afgrænse blokke. Indrykning bestemmer ikke blokke i Go; go fmt formaterer koden efter en fælles standard. Semikoloner udelades normalt i kildekoden, og compileren indsætter dem ved linjeskift efter bestemte regler. Derfor er det ikke kun en vane at trykke på Enter det rette sted; det skal også følge Go-syntaksens regler.

package main

import "fmt"

func main() {
 fmt.Println("Hello, Go")
}

Tegn man skal være opmærksom på

Når du skriver Go-kode, møder du bestemte tegn igen og igen. Krølleparenteser {} afgrænser funktionskroppe og blokke i kontrolstrukturer. Runde parenteser () bruges til funktionens parametre og kald. Firkantede parenteser [] definerer arrays og slices eng.: arrays, slices. Anførselstegn " og backticks ` bruges til strenge. Den korte deklarationsoperator := bruges konstant til at oprette variabler. Kanaler eng.: channels bruger operatoren <-, som er usædvanlig og kræver ekstra træning.

Variabler og deklarationer

I Go skelnes der mellem at erklære en variabel med var og at bruge den korte variabeldeklaration :=. Denne operator kombinerer kolon og lighedstegn, hvilket kan føles akavet i starten. Det er en god idé at øve sig, da det er en konstruktion, du skriver igen og igen.

var count int = 10
message := "typed correctly"

Kontrolstrukturer

Go bruger if, for og switch. Der findes ingen while. Syntaksen er kort, men du skal skrive sammenligningsoperatorer ==, !=, <, > og ++ meget præcist. Brugen af = i stedet for == i en betingelse giver en kompileringsfejl.

for i := 0; i < 5; i++ {
 if i%2 == 0 {
 fmt.Println("even")
 }
}

Funktioner og flere returværdier

Funktioner kan returnere mere end én værdi. Det betyder, at du ofte skriver kommaer i returværdilister og tilordninger. Det er nyttigt at øve, indtil result, err := føles naturligt.

func divide(a, b int) (int, error) {
 if b == 0 {
 return 0, fmt.Errorf("division by zero")
 }
 return a/b, nil
}

result, err := divide(10, 2)

Slice, maps og composite literals

Firkantede parenteser [] og krølleparenteser {} bruges konstant i slices og maps. Maps bruger også kolon : til at adskille nøgle og værdi. Disse linjer kan være besværlige at skrive hurtigt uden fejl.

nums := []int{1, 2, 3}
scores := map[string]int{"alice": 5, "bob": 7}

Structs og metoder

Typen struct grupperer data. Når du tilføjer metoder, skriver du parenteser til receivers eng.: receivers og bruger punktum . for at få adgang til felter eller metoder.

type User struct {
 Name string
}

func (u User) Greet() string {
 return "Hello " + u.Name
}

u := User{Name: "A"}
fmt.Println(u.Greet())

Interfaces

Interfaces i Go opfyldes implicit uden nøgleord som implements. Når du definerer dem, bruger du igen krølleparenteser og metodens signaturer.

type Stringer interface {
 String() string
}

Samtidighed og kanaler

Et af de mest karakteristiske træk i Go er kanal-operatoren <-. Den findes ikke i de fleste andre sprog og føles uvant i starten. Du bruger den til at sende ch <- value og til at modtage value := <-ch. Det er en god idé at træne dette symbol.

ch := make(chan int)
go func() { ch <- 42 }()
value := <-ch

Strings og runes

Go bruger dobbelte anførselstegn til normale strenge, backticks til rå strenge eng.: raw strings og enkelte anførselstegn til runes. Det er let at forveksle dem, men compileren er streng. Vær særligt opmærksom, når du skifter mellem ", ` og '.

text := "normal string"
raw := `path\to\file`
r := 'a'

Indrykning og formatering

gofmt formaterer koden i en ensartet stil. Du skal også respektere, hvor linjeskift og krølleparenteser placeres. En typisk fejl er at trykke Enter mellem return og returværdien. Go indsætter et semikolon ved dette linjeskift og afslutter dermed return-sætningen. Når du vænner dig til reglerne, bliver skriverytmen naturlig.

Opsummering

Programmering i Go kræver præcision. De vigtigste tegn er krølleparenteser {}, parenteser (), firkantede parenteser [], den korte deklaration := og kanal-operatoren <-. Disse symboler er overalt i Go-kode. Øv dig i at skrive disse tegn, så du får mere rutine i at skrive Go-kode hurtigt og præcist.

Næste tekst
Næste lektion
Opgave Tilbage til test
go
Diagram Skjul