Let's Go

234 ratings

Let's Go teaches you step-by-step how to create fast, secure and maintainable web applications using the fantastic programming language Go.

The idea behind the book is to help you learn by doing. Together we'll walk through the start-to-finish build of a complete web application — from structuring your workspace, through to session management, authenticating users, securing your server and testing your application.

Building a complete web application has a number of benefits: it helps put the things you're learning into context, demonstrates how different parts of your codebase link together, and forces us to work through the edge-cases and difficulties that come up when writing software in real-life. In essence, you'll learn more that you would by just reading Go's (great) documentation or standalone blog posts.

Although you can read the book cover-to-cover, it's designed specifically for you to follow along and build the application yourself.

Break out your text editor, and happy coding!

— Alex


Fully updated for Go 1.22!

Want to get a feel for the book? Take a look through the free sample.


"The book is brilliant, I’m learning so much from it. It’s definitely the best book I’ve read on developing a non-trivial web app with Go." — John Zanchetta

“I feel like this is the best programming book I've ever read. I came in with a basic understanding of golang relative to web development and this book clearly broke down all the essentials you need to get up to speed with the language in a web dev context.” — Michael Deigl

"If you've completed the Golang intro material but are wondering how to begin writing production apps, I strongly recommend Let's Go. Reading & implementing it took my Go project from spindly spaghetti code to well-structured, testable packages" — Mario Vega

“Thank you for the Golang book you've produced, it was fantastic. Your explanations and walkthrough felt like I was being taught by a veteran over the shoulder. I got exactly what I was expecting and in comparison to other tutorial books this one is leagues ahead.” — Jack Callister

Options

There are two packages to choose from:

  • Let's Go Book - The complete book in HTML, PDF and EPUB format ($34.95).
  • Let's Go Professional Package - The complete book in HTML, PDF and EPUB format, plus the full source code from each chapter in the book, printable cheatsheets for net/http and database/sql, and guided exercises to check your understanding ($59.95).

What you'll learn

  • All the fundamentals — How to start a server, create handlers, send responses, route requests and serve static files.
  • Structure and organization — How to create an idiomatic and scalable structure for your web application.
  • Using Modules — How to use Go's Module functionality to manage and version control your dependencies.
  • Managing configuration — How to use command-line flags and dependency injection to manage your application settings.
  • Logging and Error Handling — How to implement leveled logging and centralized error handling.
  • SQL databases — How to design a database model, set up a connection pool, and execute statements and queries.
  • HTML templating — How to cache your templates, display dynamic data, create custom functions and handle runtime errors.
  • Middleware — How to create your own middleware to perform common actions (like logging requests and recovering panics).
  • RESTful routing — How to create a modern request routing structure that follows the principles of REST.
  • Form validation — How to implement reusable and user-friendly pattern for validating forms and displaying errors.
  • Session management — How to use and configure sessions to persist data between requests.
  • Using HTTPS — How to correctly setup a HTTPS server and configure it for improved performance and security.
  • Prevent common vulnerabilities — How to prevent SQL injection, CSRF, XSS, clickjacking and slow-client attacks.
  • Authentication and authorization — How to safely encrypt user passwords and add signup, login and logout functionality.
  • Request context — How to use Go's context.Context to pass data between your middleware and handlers.
  • Testing — How to create unit tests, integration tests and end-to-end tests, mock dependencies and measure test coverage.
  • And most importantly… How to put it together in a fully-functioning application!

Chapters

1. Introduction

— 1.1. Prerequisites

2. Foundations

— 2.1. Project setup and creating a module

— 2.2. Web application basics

— 2.3. Routing requests

— 2.4. Wildcard route patterns

— 2.5. Method-based routing

— 2.6. Customizing responses

— 2.7. Project structure and organization

— 2.8. HTML templating and inheritance

— 2.9. Serving static files

— 2.10. The http.Handler interface

3. Configuration and error handling

— 3.1. Managing configuration settings

— 3.2. Structured logging

— 3.3. Dependency injection

— 3.4. Centralized error handling

— 3.5. Isolating the application routes

4. Database-driven responses

— 4.1. Setting up MySQL

— 4.2. Installing a database driver

— 4.3. Modules and reproducible builds

— 4.4. Creating a database connection pool

— 4.5. Designing a database model

— 4.6. Executing SQL statements

— 4.7. Single-record SQL queries

— 4.8. Multiple-record SQL queries

— 4.9. Transactions and other details

5. Dynamic HTML templates

— 5.1. Displaying dynamic data

— 5.2. Template actions and functions

— 5.3. Caching templates

— 5.4. Catching runtime errors

— 5.5. Common dynamic data

— 5.6. Custom template functions

6. Middleware

— 6.1. How middleware works

— 6.2. Setting common headers

— 6.3. Request logging

— 6.4. Panic recovery

— 6.5. Composable middleware chains

7. Processing forms

— 7.1. Setting up an HTML form

— 7.2. Parsing form data

— 7.3. Validating form data

— 7.4. Displaying errors and repopulating fields

— 7.5. Creating validation helpers

— 7.6. Automatic form parsing

8. Stateful HTTP

— 8.1. Choosing a session manager

— 8.2. Setting up the session manager

— 8.3. Working with session data

9. Server and security improvements

— 9.1. The http.Server struct

— 9.2. The server error log

— 9.3. Generating a self-signed TLS certificate

— 9.4. Running a HTTPS server

— 9.5. Configuring HTTPS settings

— 9.6. Connection timeouts

10. User authentication

— 10.1. Routes setup

— 10.2. Creating a users model

— 10.3. User signup and password encryption

— 10.4. User login

— 10.5. User logout

— 10.6. User authorization

— 10.7. CSRF protection

11. Using request context

— 11.1. How request context works

— 11.2. Request context for authentication/authorization

12. File embedding

— 12.1. Embedding static files

— 12.2. Embedding HTML templates

13. Testing

— 13.1. Unit testing and sub-tests

— 13.2. Testing HTTP handlers and middleware

— 13.3. End-to-end testing

— 13.4. Customizing how tests run

— 13.5. Mocking dependencies

— 13.6. Testing HTML forms

— 13.7. Integration testing

— 13.8. Profiling test coverage

14. Conclusion

15. Further reading and useful links

I want this!
Formats
HTML, PDF & ePUB
Last updated
March 21st, 2024
Written for
Go 1.22
Language
US English
Size
403 pages (in PDF format)
Copy product URL

Ratings

5.0
(234 ratings)
5 stars
96%
4 stars
3%
3 stars
1%
2 stars
0%
1 star
0%
$34.95

Let's Go

234 ratings
I want this!