Функция conv.ToInt32

Функция conv.ToInt32 преобразует переданное значение в тип int32. Она принимает один параметр - значение любого типа, которое необходимо преобразовать. Функция возвращает преобразованное значение типа int32. Если преобразование невозможно, функция может вызвать панику или вернуть значение по умолчанию в зависимости от реализации. В стандартной библиотеке Go нет встроенной функции conv.ToInt32, поэтому мы рассмотрим, как реализовать такое преобразование самостоятельно.

Синтаксис

goconv.ToInt32(value)

Пример

Давайте преобразуем целое число в int32:

gopackage main

import (
  "fmt"
  "strconv"
)

func ToInt32(v interface{}) int32 {
  switch val := v.(type) {
  case int:
    return int32(val)
  case int32:
    return val
  case int64:
    return int32(val)
  case float64:
    return int32(val)
  case string:
    if i, err := strconv.ParseInt(val, 10, 32); err == nil {
      return int32(i)
    }
    return 0
  default:
    return 0
  }
}

func main() {
  res := ToInt32(42)
  fmt.Println(res)
}

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

go42

Пример

Давайте преобразуем строку в int32:

gopackage main

import (
  "fmt"
  "strconv"
)

func ToInt32(v interface{}) int32 {
  switch val := v.(type) {
  case int:
    return int32(val)
  case int32:
    return val
  case int64:
    return int32(val)
  case float64:
    return int32(val)
  case string:
    if i, err := strconv.ParseInt(val, 10, 32); err == nil {
      return int32(i)
    }
    return 0
  default:
    return 0
  }
}

func main() {
  res := ToInt32("12345")
  fmt.Println(res)
}

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

go12345

Пример

Давайте преобразуем число с плавающей точкой в int32 (при этом дробная часть будет отброшена):

gopackage main

import (
  "fmt"
  "strconv"
)

func ToInt32(v interface{}) int32 {
  switch val := v.(type) {
  case int:
    return int32(val)
  case int32:
    return val
  case int64:
    return int32(val)
  case float64:
    return int32(val)
  case string:
    if i, err := strconv.ParseInt(val, 10, 32); err == nil {
      return int32(i)
    }
    return 0
  default:
    return 0
  }
}

func main() {
  res := ToInt32(12345.67)
  fmt.Println(res)
}

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

go12345

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

  • функцию conv.ToInt,
    которая преобразует значение в тип int
  • функцию conv.ToInt8,
    которая преобразует значение в тип int8
  • функцию conv.ToInt16,
    которая преобразует значение в тип int16
  • функцию conv.ToInt64,
    которая преобразует значение в тип int64