Reading command line arguments in Go

Command-line arguments are a way to supply additional information to a program when it is started. The easiest way to supply command line arguments is by specifying a space separated list of values after the command while running it:

$ ./my-program Arg1 Arg2 Arg3

Read Command line arguments in Go

In Go, you can access the raw command-line arguments using the os.Args variable. It is a slice and it holds all the command-line arguments starting with the program name.

package main

import (
	"fmt"
	"os"
)

func main() {
	args := os.Args
	fmt.Printf("All arguments: %v\n", args)

	argsWithoutProgram := os.Args[1:]
	fmt.Printf("Arguments without program name: %v\n", argsWithoutProgram)
}
$ go build command-line-arguments.go

$ ./command-line-arguments Hello World From Command Line
All arguments: [./command-line-arguments Hello World From Command Line]
Arguments without program path: [Hello World From Command Line]

Go Command Line Arguments example

Here is another example that reads a bunch of names from the command line and says Hello to all the names:

package main

import (
	"fmt"
	"os"
)

func main() {
	names := os.Args[1:]

	for _, name := range names {
		fmt.Printf("Hello, %s!\n", name)
	}
}
$ go build say-hello-to.go
$ ./say-hello-to Rajeev Sachin Jack Daniel
Hello, Rajeev!
Hello, Sachin!
Hello, Daniel!