Black Lives Matter. Support the Equal Justice Initiative.

Tutorial: Get started with Go

In this tutorial, you'll get a brief introduction to Go programming. Along the way, you will:

Prerequisites

Install Go

Just use the Download and install steps.

Write some code

Get started with Hello, World.

  1. Open a command prompt and cd to your home directory.

    On Linux or Mac:

    cd
    

    On Windows:

    cd %HOMEPATH%
    
  2. Create a hello directory for your first Go source code.

    For example, use the following commands:

    mkdir hello
    cd hello
    
  3. In your text editor, create a file hello.go in which to write your code.
  4. Paste the following code into your hello.go file and save the file.
    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello, World!")
    }
    

    This is your Go code. In this code, you:

    • Declare a main package (a package is a way to group functions).
    • Import the popular fmt package, which contains functions for formatting text, including printing to the console. This package is one of the standard library packages you got when you installed Go.
    • Implement a main function to print a message to the console. A main function executes by default when you run code in the file.
  5. Run your code to see the greeting.
    $ go run hello.go
    Hello, World!
    

    The go run command is one of many go commands you'll use to get things done with Go. Use the following command to get a list of the others:

    $ go help
    

Call code in an external package

When you need your code to do something that might have been implemented by someone else, you can look for a package that has functions you can use in your code.

  1. Make your printed message a little more interesting with a function from an external module.
    1. Visit pkg.go.dev and search for a "quote" package.
    2. Locate and click the rsc.io/quote package in search results (if you see rsc.io/quote/v3, ignore it for now).
    3. On the Doc tab, under Index, note the list of functions you can call from your code. You'll use the Go function.
    4. At the top of this page, note that package quote is included in the rsc.io/quote module.

    You can use the pkg.go.dev site to find published modules whose packages have functions you can use in your own code. Packages are published in modules -- like rsc.io/quote -- where others can use them. Modules are improved with new versions over time, and you can upgrade your code to use the improved versions.

  2. In your Go code, import the rsc.io/quote package and add a call to its Go function.

    After adding the highlighted lines, your code should include the following:

    package main
    
    import "fmt"
    
    import "rsc.io/quote"
    
    func main() {
        fmt.Println(quote.Go())
    }
    
  3. Put your own code in a module for tracking dependencies.

    When your code imports packages from another module, a go.mod file lists the specific modules and versions providing those packages. That file stays with your code, including in your source code repository.

    To create a go.mod file, run the go mod init command, giving it the name of the module your code will be in (here, just use "hello"):

    $ go mod init hello
    go: creating new go.mod: module hello
    
  4. Run your code to see the message generated by the function you're calling.
    $ go run hello.go
    go: finding module for package rsc.io/quote
    go: found rsc.io/quote in rsc.io/quote v1.5.2
    Don't communicate by sharing memory, share memory by communicating.
    

    Notice that your code calls the Go function, printing a clever message about communication.

    But before it ran the code, go run located and downloaded the rsc.io/quote module that contains the package you imported. By default, it downloaded the latest version -- v1.5.2. Go build commands are designed to locate the modules required for packages you import.

Write more code

With this quick introduction, you got Go installed and learned some of the basics. To write some more code with another tutorial, take a look at Create a Go module.