diff --git a/chapter4/const/planner/main.go b/chapter4/const/planner/main.go index e281513..d82968f 100644 --- a/chapter4/const/planner/main.go +++ b/chapter4/const/planner/main.go @@ -2,7 +2,7 @@ package main import ( "fmt" - "golang-book/head-first-go/chapter4/const/dates" + "headfirstgo/golang-book/chapter4/const/dates" ) func main() { diff --git a/chapter5/average/main.go b/chapter5/average/main.go index cbb8f39..563b00a 100644 --- a/chapter5/average/main.go +++ b/chapter5/average/main.go @@ -1,13 +1,21 @@ package main -import "fmt" +import ( + "fmt" + "headfirstgo/headfirstgo/chapter5/datafile" + "log" +) func main() { - numbers := [3]float64{71.8, 56.2, 89.5} + numbers, err := datafile.GetFloats("data.txt") + if err != nil { + log.Fatal(err) + } var sum float64 = 0 for _, num := range numbers { sum += num } - fmt.Println(sum) + sampleCount := float64(len(numbers)) + fmt.Printf("Average: %0.2f\n", sum/sampleCount) } diff --git a/chapter5/datafile/floats.go b/chapter5/datafile/floats.go new file mode 100644 index 0000000..b8e8bcf --- /dev/null +++ b/chapter5/datafile/floats.go @@ -0,0 +1,34 @@ +// Пакет datafile предназначен для чтения данных из файлов +package datafile + +import ( + "bufio" + "os" + "strconv" +) + +// GetFloats читает значение float64 из каждой строки файла +func GetFloats(fileName string) ([3]float64, error) { + var numbers [3]float64 + file, err := os.Open(fileName) + if err != nil { + return numbers, err + } + i := 0 + scanner := bufio.NewScanner(file) + for scanner.Scan() { + numbers[i], err = strconv.ParseFloat(scanner.Text(), 64) + if err != nil { + return numbers, err + } + i++ + } + err = file.Close() + if err != nil { + return numbers, err + } + if scanner.Err() != nil { + return numbers, scanner.Err() + } + return numbers, nil +}