Hi all,
this is day 1 of 100 days I am coding one go program a day. Wish me good luck!
In this example I will show how to parse command line arguments with flag module and os.Args array.
Flag module is very powerful and can be as simple as this:
//...
import "flag"
//...
name := flag.String("user", "", "user name")
flag.Parse()
fmt.Printf("user name is %s\n", *name)
To have the “same” functionality with os.Args you have to do some work. In following example I added support for –user, -user and user=<value> arguments.
//...
import "os"
//...
var userArg string
for index, arg := range os.Args {
pattern := "-user="
x := strings.Index(arg, pattern)
if x > -1 {
userArg = arg[x+len(pattern):]
continue
}
if arg == "-user" || arg == "--user" {
userArg = os.Args[index+1]
continue
}
}
fmt.Printf("user name is %s", userArg)
Full code:
package main
import (
"flag"
"fmt"
"os"
"strings"
)
func main() {
name := flag.String("user", "", "user name")
flag.Parse()
fmt.Printf("user name is %s\n", *name)
var userArg string
for index, arg := range os.Args {
pattern := "-user="
x := strings.Index(arg, pattern)
if x > -1 {
userArg = arg[x+len(pattern):]
continue
}
if arg == "-user" || arg == "--user" {
userArg = os.Args[index+1]
continue
}
}
fmt.Printf("user name is %s", userArg)
}
Latest code examples see on GitHub