When we start learning a new programming language, we typically start by writing the classic “Hello, World” program.

So Let’s write the “Hello, World” program in Golang and understand how it works. Open your favorite text editor, create a new file named hello.go, and type in the following code -

// My first Program
package main

import "fmt"

func main() {
    fmt.Println("Hello, World")

You can run the above program using go run command like so -

$ go run hello.go
Hello, World

The run command does two things - It first compiles the program to machine code and then runs the compiled code.

If you just want to compile the program without running it, then you can use go build command. It will compile the program and produce a binary file with the same name as the original file -

$ go build hello.go
$ ls
hello		hello.go

You may now run the built binary file like this -

$ ./hello
Hello, World

Understanding the internals of the “Hello, World” program

Let’s go through each line of the “Hello, World” program one by one and understand what it does-

  • Line 1: The first line that starts with // is a comment -

    // My first Program

    Comments are ignored by the Go compiler. They are used to make it easier for others to understand your code.

    Go supports two different styles of comments -

    1. Single-line comment

      // This is a Single line Comment. Everything in this line is ignored by the compiler    
    2. Multi-line comment

        This is a Multi line Comment.  
        As the name suggests, It can span multiple lines.
  • Line 2: The second line is a package declaration -

    package main

    Every Go program starts with a package declaration. Packages are used to organize related go source code files into a single unit and make them reusable.

    The package “main” is a special go package that is used with programs that are meant to be executable.

    There are two types of programs in Go - Executable Programs and Libraries. Executable programs are programs that can be run from the command line. Libraries are reusable pieces of code that are used by other programs to perform some task.

  • Line 3: The third line is an import statement -

    import "fmt"

    The import keyword is used to import reusable pieces of code from other packages to use in our program.

    The “fmt” package contains code for dealing with I/O.

  • Line 4: The fourth line is a function declaration -

    func main() {
        // ...

    A function is a unit of code that contains one or more instructions to perform a task. We typically break a program into smaller functions that take some input, do some processing on the input, and produce an output.

    A function in go is declared using the func keyword.

    The main() function is the entry point of an executable program in Go. It is the first thing that is invoked when you run an executable program.

  • Line 5: This line contains a call to the Println() function of the fmt package -

    fmt.Println("Hello, World")

    We pass the String “Hello, World” to the Println() function which prints it to the standard output along with a new line.


Congratulations! You just wrote your first program in Golang. Thank you for reading and making it till the end.

Stay tuned and subscribe to my newsletter to get news about my upcoming tutorials on Golang.

Next Article: Golang Variables, Zero Values, and Type inference