Peter, Thank you for your input regarding my question.
In an effort to clear up any confusion or ambiguity regarding the problem I am running into, I will post the code for what is working and the code that is not working. The following block of code works, a valid file is passed to the executable, the file is read and the results of how many lines were read are emitted to stdout: package main import ( "flag" "bufio" "fmt" "log" "os" ) func cli() string { flag.Parse() return flag.Arg(0) } func openFile(s string, file *os.File) { file, err := os.Open(s) if err != nil { log.Fatal(err) } defer file.Close() } func main() { fname := cli() f, err := os.Open(fname) if err != nil { log.Fatal(err) } defer f.Close() ireader := bufio.NewReader(f) scanner := bufio.NewScanner(ireader) lcounter := 0 for scanner.Scan() { lcounter++ } fmt.Printf("# lines read : %d\n", lcounter) } The following is an attempt to refactor the code by moving one section of code, specifically the code that opens a file handle returning a file descriptor to variable named "f". The file file descriptor "f" will then be used to create a buffered Reader & Scanner. It is this code that is not working, for which I seek assistance to understand why it is not working, and for a solution that adheres to what I was trying to do in the function named openFile(), which is pass two parameters to openFile(), the first, a string containing the path to be opened, the second parameter will be a pointer to os.File. What I am attempting to do here is to pass the path to be opened, while at the same time pass a pointer that will be used to return the file descriptor. The code that is not working follows: package main import ( "flag" "bufio" "fmt" "log" "os" ) func cli() string { flag.Parse() return flag.Arg(0) } func openFile(s string, file *os.File) { file, err := os.Open(s) if err != nil { log.Fatal(err) } defer file.Close() } func main() { fname := cli() var f *os.File openFile(fname, f) ireader := bufio.NewReader(f) scanner := bufio.NewScanner(ireader) lcounter := 0 for scanner.Scan() { lcounter++ } fmt.Printf("# lines read : %d\n", lcounter) } I hope that I have been able to remove the ambiguity from the code, and the intent of what it is I am trying to accomplish is clear. Again, thanks in advance to anyone that can help me resolve this issue. THANX(MKD). -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.