Golang como fazer asserção de tipo para interface desconhecida?
Entendo que posso obter o valor de um objeto por reflexão e, em seguida, use a asserção de tipo para recuperar o objeto real usando:
obj := new(User)
out := reflect.ValueOf(obj).Elem().Interface().(User)
fmt.Println(out == *obj) // true
Mas e se eu não souber que o tipo do objeto éUser
, como posso fazer asserção de tipo? Digamos que estava dentro de uma função como:
func Foo(obj interface{}) bool {
// out := reflect.ValueOf(obj).Elem().Interface().( ... )
return out == *obj
}
func main() {
obj := new(User)
fmt.Println(Foo(obj))
}
Dentro deFoo
Você nunca saberá que tipo de objeto será realmente transmitido e, portanto, como você completa a asserção de tipo?