numstats1.goΒΆ

// numstats1.go

// To run at the command line:
//    $ go run numstats1.go

package main

import (
    "bufio"
    "fmt"
    "os"
    "strconv"
)

func main() {
    // numbers.txt is assumed to have one integer per line
    file, err := os.Open("numbers.txt")

    // deferred statements are run after the function ends
    defer file.Close()

    // if err is not nil, then something went wrong opening the file
    // and so we immediately end the program by calling panic
    if err != nil {
        panic("couldn't open numbers.txt")
    }

    // read all the numbers into a slice
    nums := []int{} // nums is initially empty
    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        line := scanner.Text()
        n, err := strconv.Atoi(line)
        if err == nil {
            nums = append(nums, n)
        } else { // err != nil
            fmt.Printf("Couldn't convert \"%v\" to an int (skipping)\n", line)
        }
    } // for

    fmt.Println(nums)

} // main