How to use this book

This book teaches Go before introducing gRPC. Work through chapters in order if Go is new to you. If you already write Go, complete the short checkpoints in chapters 1–6, then begin the gRPC path.

Follow the steps literally

Each chapter adds to one project. Run commands from the folder named in that step. Create files at the paths shown. After a code change, format and run it before moving on. Keep a second terminal available for the Go server while running Flutter.

The course uses field-notes as the repository root and github.com/example/field-notes as a placeholder Go module path. If you publish the repo, replace that module path consistently in go.mod, imports, and the proto go_package option.

Command conventions

Commands are shown in PowerShell first, because learners commonly use Windows. On macOS/Linux, use the same Go, Flutter, and protoc commands in a shell; replace PowerShell environment syntax with export NAME=value. Do not paste a prompt marker such as PS> into the terminal.

The learning loop

  1. Read the goal and the short concept explanation.
  2. Make the smallest code change described.
  3. Run the exact command and compare the expected result.
  4. If it differs, use the troubleshooting note before continuing.
  5. Complete the checkpoint without copying the sample solution.
  6. Commit your working state so you can return to it.

Version policy

Programming tools change. Install supported current stable releases using the official links in References, and record the exact versions you used. Keep generated-code plugins compatible with the compiler and runtimes. This book avoids pinning old versions; instructors should publish a tested version matrix for each cohort.

If you get stuck

First read the full error, including the first line that mentions a file and line number. Then check that your current directory is correct, regenerate code after changing a .proto, run gofmt, and verify the server is listening on the same host/port the Flutter app uses. Generated files are not edited manually.

results matching ""

    No results matching ""