РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
101 of 1593 menu

Ошибка strconv.ErrSyntax

Ошибка strconv.ErrSyntax возникает при попытке преобразования строки в число, если строка содержит недопустимые символы или имеет неправильный формат. Эта ошибка возвращается функциями пакета strconv, такими как ParseInt, ParseFloat, ParseUint и другими, когда входная строка не может быть интерпретирована как число.

Ошибка возвращается в составе типа *strconv.NumError, где поле Err содержит саму ошибку, а поле Func указывает на функцию, которая ее вызвала. Это позволяет точно определить, на каком этапе и при обработке какого значения произошла синтаксическая ошибка.

Синтаксис

err := strconv.ErrSyntax

Константа strconv.ErrSyntax имеет тип error и возвращает строку "syntax error". Она используется для сравнения с ошибкой, возвращаемой функциями преобразования.

Пример

Давайте попробуем преобразовать строку с недопустимыми символами в число:

package main import ( "fmt" "strconv" ) func main() { _, err := strconv.ParseInt("123abc", 10, 64) if err != nil { fmt.Println("Error:", err) if err == strconv.ErrSyntax { fmt.Println("Syntax error detected") } } }

Результат выполнения кода:

"Error: strconv.ParseInt: parsing \"123abc\": invalid syntax" "Syntax error detected"

Пример

Еще один пример - попытка преобразования пустой строки:

package main import ( "fmt" "strconv" ) func main() { _, err := strconv.ParseFloat("", 64) if err != nil { fmt.Println("Error:", err) if errors.Is(err, strconv.ErrSyntax) { fmt.Println("Empty string cannot be parsed") } } }

Результат выполнения кода:

"Error: strconv.ParseFloat: parsing \"\": invalid syntax" "Empty string cannot be parsed"

Пример

Рассмотрим случай с числом с плавающей точкой, содержащим лишние пробелы:

package main import ( "fmt" "strconv" ) func main() { _, err := strconv.ParseInt(" 42 ", 10, 64) if err != nil { fmt.Println("Error:", err) } else { fmt.Println("Success") } }

Результат выполнения кода:

"Error: strconv.ParseInt: parsing \" 42 \": invalid syntax"

Пример

Проверим, как обработать ошибку при преобразовании шестнадцатеричного числа:

package main import ( "fmt" "strconv" ) func main() { _, err := strconv.ParseInt("0x1A", 10, 64) if err != nil { fmt.Println("Error:", err) if err == strconv.ErrSyntax { fmt.Println("Hex prefix not allowed with base 10") } } }

Результат выполнения кода:

"Error: strconv.ParseInt: parsing \"0x1A\": invalid syntax" "Hex prefix not allowed with base 10"

Смотрите также

  • функцию strconv.ParseInt,
    которая преобразует строку в целое число
  • функцию strconv.ParseFloat,
    которая преобразует строку в число с плавающей точкой
  • функцию strconv.ParseUint,
    которая преобразует строку в беззнаковое целое число
  • ошибку strconv.ErrRange,
    которая возникает при выходе числа за допустимый диапазон
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить