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

Тип strconv.NumError

Тип strconv.NumError представляет ошибку, возникающую при преобразовании строкового значения в числовое с помощью функций пакета strconv. Этот тип содержит три поля: Func - имя функции, в которой произошла ошибка, Num - строка, которую пытались преобразовать, и Err - основная причина ошибки (обычно strconv.ErrSyntax или strconv.ErrRange).

Синтаксис

type NumError struct { Func string Num string Err error }

Пример

Давайте попробуем преобразовать строку, содержащую нечисловые символы, и обработаем ошибку типа strconv.NumError:

package main import ( "fmt" "strconv" ) func main() { _, err := strconv.Atoi("abc") if err != nil { if numErr, ok := err.(*strconv.NumError); ok { fmt.Println("Func:", numErr.Func) fmt.Println("Num:", numErr.Num) fmt.Println("Err:", numErr.Err) } } }

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

"Func: Atoi" "Num: abc" "Err: syntax error"

Пример

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

package main import ( "fmt" "strconv" ) func main() { _, err := strconv.ParseInt("9999999999999999999", 10, 64) if err != nil { if numErr, ok := err.(*strconv.NumError); ok { fmt.Println("Func:", numErr.Func) fmt.Println("Num:", numErr.Num) fmt.Println("Err:", numErr.Err) } } }

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

"Func: ParseInt" "Num: 9999999999999999999" "Err: value out of range"

Пример

Давайте проверим, является ли ошибка именно ошибкой синтаксиса, с помощью сравнения с константой strconv.ErrSyntax:

package main import ( "fmt" "strconv" ) func main() { _, err := strconv.ParseFloat("1.2.3", 64) if err != nil { if numErr, ok := err.(*strconv.NumError); ok { if numErr.Err == strconv.ErrSyntax { fmt.Println("This is a syntax error") } } } }

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

"This is a syntax error"

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

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