package main import ( "fmt" "bufio" "os" "log" "strconv" ) func readInput() *string { reader := bufio.NewReader(os.Stdin) fmt.Print("Rechnung: ") text, err := reader.ReadString('\n') if err != nil { log.Fatal(err) } text = text[:len(text)-1] return &text } func parseCalculation(calculation *string) *int64 { for i := 0; i < len(*calculation); i++ { // no range because unicode would be wasteful if (*calculation)[i] == '+' { return add(&i, calculation) } } singleNumber, err := strconv.ParseInt(*calculation, 10, 64) if err != nil { log.Fatal("Unbekanntes Rechenzeichen") } return &singleNumber } func add(i *int, calculation *string) *int64 { left, err := strconv.ParseInt((*calculation)[:*i], 10, 64) if err != nil { log.Fatal(err) } right, err := strconv.ParseInt((*calculation)[*i+1:], 10, 64) if err != nil { log.Fatal(err) } result := left + right return &result } func main() { inputptr := readInput() resultptr := parseCalculation(inputptr) fmt.Printf("Ergebnis: %d", *resultptr) }