package main import ( "bufio" "os" "strconv" ) func LoadData(path string) []DataEntry { readFile, err := os.Open(path) checkErr(err) fileScanner := bufio.NewScanner(readFile) fileScanner.Split(bufio.ScanLines) var fileLines []string for fileScanner.Scan() { fileLines = append(fileLines, fileScanner.Text()) } err = readFile.Close() checkErr(err) var data []DataEntry lastData := 0 for _, line := range fileLines { toInt, err := strconv.Atoi(line) status := Nothing checkErr(err) switch { case lastData == 0: status = Nothing case lastData < toInt: status = Increased case lastData > toInt: status = Decreased case lastData == toInt: status = Equal } lastData = toInt data = append(data, DataEntry{ Value: toInt, Status: status, }) } return data } type Status int const ( Nothing Status = iota Decreased Increased Equal ) func (s Status) String() string { switch s { case Nothing: return "N/A - no previous measurement" case Increased: return "increased" case Decreased: return "decreased" case Equal: return "equal" default: return "" } } type DataEntry struct { Value int Status Status }