Можно ли сделать утверждение типа по любому из подтипов объекта, составленного несколько раз?
Например, скажем, у меня есть следующие объекты:
type MyResponseWriter struct {
http.ResponseWriter
// ...
}
type MyOtherResponseWriter struct {
http.ResponseWriter
// ...
}
Я мог бы закончитьчто-то вроде этого:
rw := &MyOtherResponseWriter{ResponseWriter: &MyResponseWriter{ResponseWriter: w}}
Теперь, если у меня есть w http.ResponseWriter
, можно ли его «привести» к MyOtherResponseWriter
или MyResponseWriter
?
cw.(*MyResponseWriter) // panic: interface conversion: http.ResponseWriter is *MyOtherResponseWriter, not *MyResponseWriter
FWIW, мой фактический случай использования состоит в том, что в http.Handler
я имею дело с http.ResponseWriter
, который был обернут несколько раз, и мне не удается получить доступ к дополнительному методу, который меня интересует, и причину, по которой я хочу это сделатьэто позволяет промежуточному программному обеспечению получать доступ к данным, записанным обработчиком.
Спасибо