我在C中有以下函式set:
void set(void *data)
{
//對資料(指向Go變數)做一些作業。
現在,在Go中,我需要有一個函式接受任何變數作為引數,并呼叫C函式set,將這個引數傳遞給它。我怎樣才能做到這一點呢?我們是否可以通過讓Go函式接受一個引數如data interface{},呼叫unsafe.Pointer傳遞這個引數,然后用unsafe.Pointer的結果呼叫C函式?
uj5u.com熱心網友回復:
只要你遵循CGO檔案中傳遞指標部分所詳述的約束,你可以創建一個接受空介面引數的Go封裝函式,并使用reflect提取指標值。
func Set(i interface{}) /span> {
C.set(unsafe.Pointer(reflect.ValueOf(i).Pointer())
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/313759.html
標籤:
