Skrivinställningarna kunde inte uppdateras. Ladda om sidan för att försöka igen.
Tangentbordsövning: Programmering i Go
Reglerna för beräkning av noggrannhet har ändrats. Den här övningen börjar om från början.
Det gick inte att bekräfta att ditt avslutade pass sparades. Försök spara igen utan att skriva texten på nytt.
Tangentbordsövning: Programmering i Go
Tangentbordsträning är betydelsefull för programmering. Du blir effektivare när du använder snabbskrivningstekniker för att skriva kod i programmeringsspråket Go.
Kodning i Go och tangentbordsträning
Du kan kombinera programmering i Go med tangentbordsträning. Go har strikta syntaxregler och specialtecken som kan vara svåra att skriva snabbt. Ett fel i en klammerparentes eller operator kan ge ett kompileringsfel.
Vad är typiskt för Go-syntaxen?
Go är ett kompilerat språk (engelska: compiled language) med en ren, minimalistisk stil. Koden börjar alltid med en package-deklaration. Importer kan deklareras var för sig eller samlas i block. Funktioner deklareras med func och avgränsas med klammerparenteser {}. Indrag avgränsar inte block i Go; go fmt formaterar koden enligt en gemensam standard. Semikolon utelämnas oftast i källkoden och kompilatorn infogar dem vid radbrytningar enligt särskilda regler.
package main
import "fmt"
func main() {
fmt.Println("Hello, Go")
}
Tecken att ha koll på
Vanliga tecken i Go är klammerparenteser {}, parenteser (), hakparenteser [], citattecken ", backticks `, den korta deklarationsoperatorn := och kanalpilen <-.
Variabler och deklarationer
Go skiljer mellan deklaration med var och kort variabeldeklaration :=. Den senare kombinerar två symboler och används ofta.
var count int = 10
message := "typed correctly"
Styrstrukturer
Go har if, for och switch, men inget while. Jämförelseoperatorerna ==, !=, <, > samt ++ måste skrivas exakt.
for i := 0; i < 5; i++ {
if i%2 == 0 {
fmt.Println("even")
}
}
Funktioner och flera returvärden
Funktioner kan returnera flera värden. Det innebär frekventa komman i returlistor och tilldelningar.
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)
Slices, maps och litteraler
Hakparenteser [] och klammerparenteser {} syns överallt. Maps använder kolon : mellan nyckel och värde.
nums := []int{1, 2, 3}
scores := map[string]int{"alice": 5, "bob": 7}
Structs och metoder
Typen struct grupperar data. Metoder har en mottagare (receiver) och anropas med punkt ..
type User struct {
Name string
}
func (u User) Greet() string {
return "Hello " + u.Name
}
u := User{Name: "A"}
fmt.Println(u.Greet())
Gränssnitt
Gränssnitt (engelska: interfaces) uppfylls implicit i Go, utan ett nyckelord som implements.
type Stringer interface {
String() string
}
Samtidighet och kanaler
Kanalpilen <- är typisk för Go. Den används för både sändning (ch <- value) och mottagning (value := <-ch).
ch := make(chan int)
go func() { ch <- 42 }()
value := <-ch
Strängar och runer
Go använder dubbla citattecken för vanliga strängar, backticks för raw strings och enkla citattecken för runer.
text := "normal string"
raw := `path\to\file`
r := 'a'
Indrag och formatering
gofmt formaterar koden i en enhetlig stil. Placeringen av klammerparenteser och radbrytningar spelar roll. Ett vanligt misstag är Enter mellan return och returvärdet.
Sammanfattning
De viktigaste tecknen i Go är klammerparenteser {}, parenteser (), hakparenteser [], operatorn := och kanalpilen <-. Öva på att skriva dessa tecken för att få mer vana vid att skriva Go-kod snabbt och noggrant.