我正在包装一个 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* 数据,但是这个无长度的接口让我无法理解。
慕容708150
相关分类