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

Метод reflect.Type.AssignableTo

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

Синтаксис

t1.AssignableTo(t2)

Пример

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

package main import ( "fmt" "reflect" ) func main() { var x int var y int t1 := reflect.TypeOf(x) t2 := reflect.TypeOf(y) res := t1.AssignableTo(t2) fmt.Println(res) }

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

true

Пример

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

package main import ( "fmt" "reflect" ) func main() { var x int var y string t1 := reflect.TypeOf(x) t2 := reflect.TypeOf(y) res := t1.AssignableTo(t2) fmt.Println(res) }

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

false

Пример

Давайте проверим, можно ли присвоить значение пользовательского типа переменной базового типа:

package main import ( "fmt" "reflect" ) type MyInt int func main() { var x MyInt var y int t1 := reflect.TypeOf(x) t2 := reflect.TypeOf(y) res := t1.AssignableTo(t2) fmt.Println(res) }

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

false

Пример

Давайте проверим, можно ли присвоить значение интерфейсного типа переменной конкретного типа:

package main import ( "fmt" "reflect" ) type MyInterface interface { Method() } type MyStruct struct{} func (m MyStruct) Method() {} func main() { var x MyStruct var y MyInterface t1 := reflect.TypeOf(x) t2 := reflect.TypeOf(y) res := t1.AssignableTo(t2) fmt.Println(res) }

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

true

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

  • метод reflect.Type.ConvertibleTo,
    который проверяет возможность преобразования типов
  • метод reflect.Type.Implements,
    который проверяет реализацию интерфейса
  • метод reflect.Type.Kind,
    который возвращает категорию типа
  • функцию reflect.TypeOf,
    которая возвращает тип значения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить