liveBook · Manning

Go

As explained in Learn Go with Pocket-Sized Projects

Go is a statically typed programming language designed for readable, maintainable, compiled software, especially concurrent and networked systems.

Go is a compiled, statically typed language designed to keep large software projects readable and manageable. It is especially suited to backend services, APIs, networked servers, cloud tools, and command-line applications. Its simplicity-driven design addresses slow builds, difficult dependency management, and growing code complexity. section 1.1 section 1.2.1

Several choices shape everyday Go development:

  • Use the standard toolchain to format code, manage dependencies, compile programs, inspect code, run tests, benchmark, and analyze performance. section 1.1
  • Treat errors as values rather than exceptions, and handle unsuccessful paths explicitly. section 1.3.1
  • Build behavior through composition and implicit interfaces: a type satisfies an interface by providing its methods, without declaring that relationship. section 1.2.1 section 1.3.1
  • Use goroutines and channels when concurrency helps, but do not assume every Go program needs them. section 1.2.3 section 1.3.1

Run, then test a small program

Start with a hello-world-style program and run it with `go run` while developing. Write tests alongside a function, then execute them with `go test`. For multiple input–output cases, use a table-driven test; an example function can also verify printed output. These steps connect Go syntax to an executable program and its expected behavior. section 1.3.1 section 2.6

Go is not the best fit when an application needs precise control over memory release: it uses garbage collection. Its executables can also be comparatively large. TinyGo is an option for constrained devices, while WebAssembly offers another target for code running outside a conventional local executable. section 1.2.2 section 12.0

How Learn Go with Pocket-Sized Projects covers it

How deep it goes
Develops Go through progressively larger runnable projects, from basic syntax to cloud-ready services, while limiting detailed goroutine coverage.
Examples
Uses a hello-world-style program, table-driven tests, APIs with microservices, and WebAssembly and TinyGo projects.
What it assumes
Assumes some programming experience while teaching Go syntax from a hello-world starting point.
What you can do after
Build it from scratch: progress from a small tested Go program toward a cloud-ready service.
How it connects
Connects Go to implicit interfaces, composition, errors as values, garbage collection, goroutines, channels, and testing.

Also explained in

Compare how 11 books explain Go →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Learn Go with Pocket-Sized Projects. The section links point to the parts of the book it draws on.