У меня есть старый код C, в котором несколько интенсивно используются упакованные структуры. Я собираюсь использовать Go в качестве оболочки для этого кода, но мне трудно найти способ передать или даже написать определения для этих структур.
Пример:
import "unsafe";
type AlignTest struct {
c byte;
y int16;
z int16;
q int32;
}
func main() {
vr := new(AlignTest);
fmt.Println(unsafe.Sizeof(*vr), "\n");
}
Возвращает 12, а не 1 + 2 + 2 + 4 = 9, что я хотел бы с упакованной / невыровненной структурой.
Я знаю, что могу просто создать массив байтов и выполнить синтаксический анализ вручную, но это кажется очень хрупким и подверженным ошибкам ...