learned I didn't need git for external modules and different folders can have different mains
This commit is contained in:
52
cmd/sum/sum.go
Normal file
52
cmd/sum/sum.go
Normal file
@ -0,0 +1,52 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func OpenFile(fileName string) (*os.File, error) {
|
||||
fmt.Println("Opening", fileName)
|
||||
return os.Open(fileName)
|
||||
}
|
||||
|
||||
func CloseFile(file *os.File) {
|
||||
fmt.Println("Closing file")
|
||||
file.Close()
|
||||
}
|
||||
|
||||
func GetFloats(fileName string) ([]float64, error) {
|
||||
var numbers []float64
|
||||
file, err := OpenFile(fileName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer CloseFile(file)
|
||||
scanner := bufio.NewScanner(file)
|
||||
for scanner.Scan() {
|
||||
number, err := strconv.ParseFloat(scanner.Text(), 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
numbers = append(numbers, number)
|
||||
}
|
||||
if scanner.Err() != nil {
|
||||
return nil, scanner.Err()
|
||||
}
|
||||
return numbers, nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
numbers, err := GetFloats(os.Args[1])
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
var sum float64 = 0
|
||||
for _, number := range numbers {
|
||||
sum += number
|
||||
}
|
||||
fmt.Printf("Sum: %0.2f\n", sum)
|
||||
}
|
Reference in New Issue
Block a user