> ## Documentation Index
> Fetch the complete documentation index at: https://site.aspect.build/llms.txt
> Use this file to discover all available pages before exploring further.

# Outline

> Bazel 103 covers Go with rules_go and Gazelle — hermetic Go SDK toolchains, formatting and linting, running tools, and deploying containers.

{!user.loggedIn ? (
<Tip>
<a href="https://auth.aspect.build/oauth/account/sign-up">Sign up</a> for a free Aspect account to access the full training course. Already have one? <a href="/login?redirect=%2Flearning%2Fbazel-103">Log in</a>.
</Tip>
) : null}

Add Google’s programming language to your Bazel setup, with all the common developer workflows.
This course assumes students have completed [Bazel 101](/learning/bazel-101).

Bazel provides a hermetic, reproducible build environment for Go, including managing the version of the Go SDK as a Bazel “toolchain”. Since the Go language was developed alongside Bazel (or Blaze, as it’s called at Google), it feels like a more natural fit with Bazel than some other languages.

If your application builds with `go build`, it should be straightforward to build it with Bazel instead.

# **Outline**

### Getting Started

[rules\_go and gazelle](/learning/bazel-103/rules-go-and-gazelle)

[Create and run an application](/learning/bazel-103/create-app)

[Formatting and Linting](/learning/bazel-103/format-and-lint)

[Running Go tools](/learning/bazel-103/running-go-tools)

[Deploying containers](/learning/bazel-103/deploy-container)

More lessons are coming soon:

Editors and IDEs

* simple: generated files in source tree
* Complex: GoPackagesDriver
* GoLand

Debugging

Advanced

* Fetching via Go Proxy
