임의로 데이터를 보유하는 데 사용할 수있는 void * 데이터 필드가있는 구조체가있는 C 라이브러리를 래핑하고 있습니다. 이것이 관용적 인 Go에서 이것을 감싸는 최선의 방법은 무엇입니까 (심지어 가능하다면)? 내가 좋아하는 뭔가를 할 기대했다Golang (cgo) - Arbitrary void * interface
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))
}
, 그리고 어쨌든 분명히 잘못된 접근입니다.
[] 바이트 소스를 사용하여 길이 필드로 void * 데이터를 성공적으로 설정했지만 길이가없는이 인터페이스는 나를 벗어납니다.
- https://github.com/boj/goenet - 여전히 있지만 약간의 버그를, 그래서 조심해. – bojo