Code typing3 min readBy Ian Rennie

Type Go Code Faster With These Drills

Go is deliberately simple, which makes it easy to read but not automatically easy to type fast. The language's idioms produce their own specific typing patterns: `:=` for short declarations, `if err != nil` on nearly every function boundary, struct tags wrapped in backticks, and the channel send-receive arrow `<-`. Drilling these patterns is how Go developers move from 'I can type Go' to 'Go typing is invisible'.

Go's Specific Typing Profile

Where Python is colon-heavy and Rust is symbol-heavy, Go is pattern-heavy. The same short patterns appear over and over: `:=`, `if err != nil { return err }`, `func (x *Type) Method()`, `make(chan int)`. Drill these patterns as whole motor units and Go becomes dramatically faster to type.

The opposite approach — drilling individual keys in isolation — does not work as well for Go, because the patterns are short and well-defined enough that chunking them produces outsized gains.

The Short Variable Declaration

`:=` appears on nearly every line of idiomatic Go. It is a two-character sequence where neither key is difficult, but the pair is uncommon outside Go and feels slow until drilled. The Go symbols lesson drills `:=` alongside common openings like `x := 1`, `err := doWork()`, `data, err := fetch()`.

Target: you should be able to type `err := ` in under half a second. If it is slower than that, it is worth a few focused drill sessions.

  • `:=` for short variable declarations
  • `if err != nil { return err }` as a single motor pattern
  • `func (x *Type) Method() error` as a chunked signature
  • Channel operations `ch <-` and `<-ch`
  • Struct tags in backticks: `\`json:"name"\``

Error Handling as a Chunk

The single most common pattern in Go is `if err != nil { return err }`. Typing this character-by-character is the hallmark of a beginner. Idiomatic Go developers have this pattern chunked as a unit — their fingers produce it in about a second regardless of how they are feeling.

The Go control flow lesson drills this pattern repeatedly in different contexts so it becomes muscle memory. Once it is, a meaningful fraction of your Go typing becomes effectively free.

Struct Tags and Interfaces

Struct tags are written inside backticks, which is a key that prose typists almost never use. Tags like `\`json:"email"\`` appear on nearly every API struct in a Go service. The Go declarations lesson drills struct definitions with realistic tag patterns.

Interface definitions are another place where chunked patterns help: `type Reader interface { Read(p []byte) (n int, err error) }` is long but follows a standard shape. The Go functions lesson covers both method signatures and interface definitions.

Goroutines and Channels

The send-receive arrow `<-` is Go's most distinctive operator. It appears in `ch <- value` (send), `value := <-ch` (receive), and `for x := range ch` (receive loop). The Go idioms lesson and real snippet lesson put these in real concurrency contexts — a worker pool, a fan-out pipeline, a small HTTP handler with goroutines.

After two to three focused practice sessions on channel patterns, `<-` stops feeling foreign and Go concurrency code becomes noticeably faster to type.

Developer practicing Go code typing on a laptop with terminal and editor visible
Go's patterns are compact and repeatable, which is exactly what makes them worth drilling as chunks.

About the author

Ian Rennie

CEO & Lead Developer at Broctic Inc

Ian is the co-founder and CEO of Broctic Inc, the company behind SureTyping. He designed the platform's lesson system and adaptive training engine, drawing on years of experience building educational software. When he's not coding, he's testing new keyboard layouts — currently splitting time between Colemak-DH and Graphite.