我正在包装一个 C 库,该库具有一个带有 void* 数据字段的结构,可用于任意保存数据。将其包装在惯用的 Go 中的最佳方式(如果可能的话)是什么?
结构很简单:
typedef struct _Foo {
void * data;
} Foo;
我希望做类似的事情:
type Foo C.Foo
func (f *Foo) SetData(data interface{}) {
f.data = unsafe.Pointer(&data)
}
func (f *Foo) Data() interface{} {
return (interface{})(unsafe.Pointer(f.data))
}
这是行不通的,而且显然是错误的方法。
我已经使用 []byte 源成功地设置了一个带有长度字段的 void* 数据,但是这个无长度接口让我无法理解。