Как проверить ошибки в вводимом тексте?

В Go существует несколько способов проверки ошибок в вводимом тексте, в зависимости от требований вашего кода и используемого подхода.

1. Использование функции Scan:
Функция Scan из пакета fmt позволяет считывать текст с консоли. Она возвращает булевое значение, которое указывает, была ли ошибка во время чтения. Вы можете использовать это значение для проверки наличия ошибки. Например:

var text string
if _, err := fmt.Scan(&text); err != nil {
    fmt.Println("Ошибка ввода:", err)
} else {
    // Обработка ввода
}

2. Использование функции ReadString:
Более гибким и мощным способом проверки ошибок является использование функции ReadString из пакета bufio. Она возвращает строку и ошибку. Если в процессе чтения возникла ошибка, то она будет отражена возвращаемой ошибкой. Например:

reader := bufio.NewReader(os.Stdin)
text, err := reader.ReadString('n')
if err != nil {
    fmt.Println("Ошибка ввода:", err)
} else {
    // Обработка ввода
}

3. Использование функции Scanln:
Еще одним вариантом является использование функции Scanln из пакета fmt. Эта функция считывает и разбирает текст до первого символа новой строки и присваивает его переданным аргументам. Если в процессе чтения возникла ошибка, она будет возвращена в виде ошибки. Например:

var text string
if _, err := fmt.Scanln(&text); err != nil {
    fmt.Println("Ошибка ввода:", err)
} else {
    // Обработка ввода
}

4. Использование пакета regexp:
Если вам нужно выполнить более сложную проверку текста, вы можете использовать пакет regexp. Он предоставляет функциональность для работы с регулярными выражениями и позволяет проверять текст на соответствие заданному шаблону. Например:

import (
    "fmt"
    "regexp"
)

func main() {
    var text string
    var pattern = regexp.MustCompile("^\d+$")
    
    fmt.Print("Введите число: ")
    if _, err := fmt.Scanln(&text); err != nil {
        fmt.Println("Ошибка ввода:", err)
    } else if !pattern.MatchString(text) {
        fmt.Println("Введенное значение не является числом")
    } else {
        // Обработка ввода
    }
}

5. Использование пакета strconv:
Если вам нужно преобразовать вводимый текст в числовой формат, вы можете использовать пакет strconv. Он предоставляет функции для конвертирования строк в числа различных форматов. Вы можете использовать эти функции для проверки наличия ошибки во время преобразования. Например:

import (
    "fmt"
    "strconv"
)

func main() {
    var text string
    
    fmt.Print("Введите число: ")
    if _, err := fmt.Scanln(&text); err != nil {
        fmt.Println("Ошибка ввода:", err)
    } else {
        if number, err := strconv.ParseFloat(text, 64); err != nil {
            fmt.Println("Не удалось преобразовать введенное значение в число")
        } else {
            // Обработка числа
        }
    }
}

Во всех этих примерах показаны различные подходы к проверке ошибок в вводимом тексте в Go. Выбор определенного подхода зависит от требований вашего кода и сложности проверки.