package main import ( "bufio" "fmt" "os" "regexp" "time" ) func ParseData(pointer *[]string) { re := regexp.MustCompile(`\d+:\d+`) timeStringLayout := "15:04" dataLen := len(*pointer) for i := 0; i < dataLen; i++ { // address := &(*pointer)[i] // fmt.Printf("Element %d: Value = %s, Address = %p\n", i, *address, address) if i == 0 { continue } // fmt.Println((*pointer)[i]) startTime := re.Find([]byte((*pointer)[i-1])) startTimeString := string(startTime) startTimeParsed, err := time.Parse(timeStringLayout, startTimeString) if err != nil { fmt.Println("Error parsing date:", err) } endTime := re.Find([]byte((*pointer)[i])) endTimeString := string(endTime) // fmt.Printf("%s - %s\n", startTime, endTime) endTimeParsed, err := time.Parse(timeStringLayout, endTimeString) if err != nil { fmt.Println("Error parsing date:", err) } duration := endTimeParsed.Sub(startTimeParsed) fmt.Printf("%s\t%s\n", duration, (*pointer)[i]) } } func main() { // Create a new scanner to read from standard input scanner := bufio.NewScanner(os.Stdin) // Create var for string array with received data var dataToParse []string // Read each line from stdin for scanner.Scan() { line := scanner.Text() // Process the line (for example, print it) dataToParse = append(dataToParse, line) } // Check for errors during scanning if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "Error reading from stdin:", err) } // for i := 0; i < len(dataToParse); i++ { // fmt.Println(dataToParse[i]) // } ParseData(&dataToParse) }