У меня есть несколько различных структур, как Big
с Small
вставленных в смещении 0. Как я могу получить доступ к Small
«s структурам поля из кода, который ничего не знает о Big
типа, но известно, что Small
находится со смещением 0?Golang: преобразовать в-структуру вкладываются в смещении 0-структуры
type Small struct {
val int
}
type Big struct {
Small
bigval int
}
var v interface{} = Big{}
// here i only know about 'Small' struct and i know that it is at the begining of variable
v.(Small).val // compile error
Кажется, что компилятор теоретически может работать такое выражение, потому что он знает, что Big
типа имеет Small
типа встроенный со смещением 0. Есть ли способ сделать такие вещи (возможно, с unsafe.Pointer
)?
игнор - не реальный вопрос правильно – Sridhar