reflect.Type.ConvertibleTo
Метод reflect.Type.ConvertibleTo проверяет,
можно ли преобразовать значение типа, представленного
reflect.Type, к типу, переданному в качестве
аргумента. Он возвращает true, если
преобразование допустимо, и false в противном
случае. В качестве единственного параметра метод
принимает reflect.Type целевого типа, с которым
сравнивается возможность преобразования.
Синтаксис
t.ConvertibleTo(u)
Пример
Давайте проверим, можно ли преобразовать тип int
в тип int64:
package 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)
}
Результат выполнения кода:
true
Пример
Давайте проверим, можно ли преобразовать тип string
в тип int:
package main
import (
"fmt"
"reflect"
)
func main() {
srcType := reflect.TypeOf("abcde")
dstType := reflect.TypeOf(0)
res := srcType.ConvertibleTo(dstType)
fmt.Println(res)
}
Результат выполнения кода:
false
Пример
Давайте проверим, можно ли преобразовать тип []int
в тип []int64:
package 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)
}
Результат выполнения кода:
false
Пример
Давайте проверим, можно ли преобразовать тип int
в тип interface{}:
package main
import (
"fmt"
"reflect"
)
func main() {
srcType := reflect.TypeOf(42)
var dst interface{}
dstType := reflect.TypeOf(dst)
res := srcType.ConvertibleTo(dstType)
fmt.Println(res)
}
Результат выполнения кода:
true
Смотрите также
-
метод
reflect.Type.AssignableTo,
который проверяет возможность присваивания типов -
метод
reflect.Value.Convert,
который выполняет фактическое преобразование значения -
метод
reflect.Type.Implements,
который проверяет реализацию интерфейса -
функцию
reflect.TypeOf,
которая возвращает тип значения