Oh, sorry, didn't see that. `grep` doesn't return a value, so there's nothing to assign to a variable. What are you trying to do exactly? If you want a function value you can call repeatedly which will pass the same arguments to `grep`, you want:
f := func() { grep(flag.Arg(1), flag.Arg(2)) }
This is called a closure. It basically creates a function value you can call, and it will execute the body each time, in this case the call to grep. It will also capture any variables referenced inside it, but that doesn't happen here.