type BizError struct {
Code string
Mesg string
}
type ApiReply struct {
Err BizError
}
type GetDataReply struct {
Data interface{}
ApiReply
}
с приведенным выше определением я хочу сделать следующее:
func Func1(data interface{}) {
switch data.(type) {
case ApiReply:
data.(ApiReply).Err.Code = "0"
}
}
Ключевая проблема заключается в том, что в Func1 переключатель типа не знает никаких новых типов, которые встраивают ApiReply, это «общий» обработчик. Хотя переданный ему data
на самом деле является «дочерним классом» ApiReply. По-видимому, в Go вы не можете утверждать тип GetDataReply для ApiReply.
Как я могу справиться с этим случаем, чтобы в Func1 мне не нужно было явно объявлять все возможные структуры, которые могут встраивать ApiReply?