背景:我正在尝试制作一个包,该包基本上提供围绕我正在使用的 C 库的瘦 Go 包装器。该包故意非常原始,因为其他几个包依赖于 C 库的低级功能,我不想复制粘贴一堆 Go 包装器代码。
假设我有一个看起来像这样的 C 结构:
typedef struct {
uint32_t fizz;
uint64_t buzz;
} test
在 CGo 中,我包装 C-struct 并创建新方法,如下所示:
package test
type Test C.test
func NewTest() *Test {
return &Test{1,2}
}
问题是在包之外,我无法访问 C-struct 中的字段
package main
import "test"
func main() {
t := test.NewTest()
_ = t.fizz // ERROR!!! Unexported field name!!
}
有什么简单的方法可以解决这个问题(除了为每个字段创建访问器方法)?