reflect.Type.ConvertibleTo

Метод reflect.Type.ConvertibleTo проверяет, можно ли преобразовать значение типа, представленного reflect.Type, к типу, переданному в качестве аргумента. Он возвращает true, если преобразование допустимо, и false в противном случае. В качестве единственного параметра метод принимает reflect.Type целевого типа, с которым сравнивается возможность преобразования.

Синтаксис

got.ConvertibleTo(u)

Пример

Давайте проверим, можно ли преобразовать тип int в тип int64:

gopackage main

import (
  "fmt"
  "reflect"
)

func main() {
  var src int = 42
  var dst int64

  srcType := reflect.TypeOf(src)
  dstType := reflect.TypeOf(dst)

  res := srcType.ConvertibleTo(dstType)
  fmt.Println(res)
}

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

gotrue

Пример

Давайте проверим, можно ли преобразовать тип string в тип int:

gopackage main

import (
  "fmt"
  "reflect"
)

func main() {
  srcType := reflect.TypeOf("abcde")
  dstType := reflect.TypeOf(0)

  res := srcType.ConvertibleTo(dstType)
  fmt.Println(res)
}

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

gofalse

Пример

Давайте проверим, можно ли преобразовать тип []int в тип []int64:

gopackage main

import (
  "fmt"
  "reflect"
)

func main() {
  srcType := reflect.TypeOf([]int{1, 2, 3, 4, 5})
  dstType := reflect.TypeOf([]int64{})

  res := srcType.ConvertibleTo(dstType)
  fmt.Println(res)
}

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

gofalse

Пример

Давайте проверим, можно ли преобразовать тип int в тип interface{}:

gopackage main

import (
  "fmt"
  "reflect"
)

func main() {
  srcType := reflect.TypeOf(42)
  var dst interface{}
  dstType := reflect.TypeOf(dst)

  res := srcType.ConvertibleTo(dstType)
  fmt.Println(res)
}

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

gotrue

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

  • метод reflect.Type.AssignableTo,
    который проверяет возможность присваивания типов
  • метод reflect.Value.Convert,
    который выполняет фактическое преобразование значения
  • метод reflect.Type.Implements,
    который проверяет реализацию интерфейса
  • функцию reflect.TypeOf,
    которая возвращает тип значения