The anatomy of a commandline interface
Let's take a look at a typical commandline interface. Say we invoke the cat
command:
cat -n myfile.txt
We could describe this as:
catis our command.-nis a short flag.myfile.txtis our argument.
Building something like this call is fairly simple in golang with just the
standard library. Building our main.go (or equivalent) file would produce a
binary on disk, which acts as our command.
We would just need to reach into the standard library for the flag package, which gives us the ability to register and parse flags.
Finally, we would just need to review the argument list to grab the final value of
myfile.txt that the user provided, and take action.
But what if we want something more complex?
For reference, a naive implementation of cat with the -n flag using the
flag package is here.