Go - ArchWiki

# Go

Go is a statically-typed language with syntax loosely derived from that of C, adding garbage collected memory management, type safety, some dynamic-typing capabilities, additional built-in types such as variable-length arrays and key-value maps, and a large standard library.

## Installation

There are two Go compilers nowadays, and they can be installed from official repositories:

- gc: common name for official set of compilers 8g(x86), 6g(amd64), 5g(arm), that can be installed with go
  - fast compilation
- gccgo: frontend for gcc, part of its compiler collection, can be installed with gcc-go
  - goroutines becomes full flow
  - small size of the binary
  - better optimization

### Test your installation

Check that Go is installed correctly by building a simple program, as follows:

    hello.go

    package main

    import "fmt"

    func main() {
        fmt.Println("Hello, Arch!")
    }

Then run it with the go tool:

    $ go run hello.go

    Hello, Arch!

Compilation with standard gc compiler (same as `go build -compiler=gc test.go`):

    $ go build test.go

Compilation with gccgo (same as `go build -compiler=gccgo test.go`):

    $ gccgo test.go -o test

### $GOPATH

Go dependencies, when used for example in `import` statements, are searched for in the `$GOPATH` variable, and then - in `$GOROOT` (go installation directory, `/usr/lib/go` by default). If you expect to use external dependencies, not only basic from `$GOROOT`, you must specify workspace area in your `~/.bash_profile` (or equivalent):

    export GOPATH=~/go

Tip: You can see all Go variables by running `go env`

Create that workspace:

    $ mkdir -p ~/go/{bin,src}

`src` directory is used to store sources of the project, and `bin` for executables.

Also you can add path to `bin` directory in `$PATH` environment variable to run installed programs (written on Go language) anywhere (like, for example, `ls`):

    export PATH="$PATH:$GOPATH/bin"

Note that we also add the `bin` subdirectory to the `$PATH` so we can run any executables that be required.

Run `go help gopath` for more information.

## See also

- Official web-site of Go Programming Language
- Wikipedia article
- Examples with small descriptions
- Interactive Go training tour
- IDEs and Plugins for Go

Category:

- Programming language