Source File: go-coreutils/head/main.go
package main
import (
"fmt"
"bufio"
"os"
"log"
"flag"
"io"
)
func HeadFile(file io.Reader, count int) {
scan := bufio.NewScanner(file)
for cur_line := 0; scan.Scan(); cur_line++ {
line := scan.Text()
if cur_line < count {
fmt.Println(line)
}
}
if scan.Err() != nil { log.Fatal(scan.Err()) }
}
func main() {
var count int
flag.IntVar(&count, "n", 10, "number of lines")
flag.Parse()
if flag.NArg() > 0 {
files := flag.Args()
for _, fname := range files {
file, err := os.Open(fname)
if err != nil { log.Fatal(err) }
HeadFile(file, count)
}
} else {
HeadFile(os.Stdin, count)
}
}