Предыстория: я пытаюсь создать пакет, который, по сути, предоставляет тонкие оболочки Go для библиотеки C, которую я использую. Пакет намеренно очень сырой, так как несколько других пакетов зависят от низкоуровневых функций библиотеки C, и я не хочу копировать-вставлять кучу кода оболочки Go.
Предположим, у меня есть C-структура, которая выглядит так:
typedef struct {
uint32_t fizz;
uint64_t buzz;
} test
А в CGo я оборачиваю C-структуру и создаю новые методы следующим образом:
package test
type Test C.test
func NewTest() *Test {
return &Test{1,2}
}
Проблема в том, что вне пакета я не могу получить доступ к полям в C-структуре
package main
import "test"
func main() {
t := test.NewTest()
_ = t.fizz // ERROR!!! Unexported field name!!
}
Есть ли простой способ обойти это (кроме создания методов доступа для каждого поля)?