データを任意に保持するために使用できるvoid*データフィールドを持つ構造体を持つCライブラリをラップしています。これを慣用的な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*データを正常に設定しましたが、この長さのないインターフェイスではわかりません。