我有一個(gè) C 函數(shù),它在發(fā)生異常時(shí)返回 NULL。我如何在 Go 中檢查返回值是否為 NULL,因?yàn)樗鼪]有內(nèi)置類型來(lái)表示 C NULL。下面是我的代碼retVal := C.myfunc()if retVal == nil { // handle the error}
1 回答

慕桂英4014372
TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
我認(rèn)為您可以用來(lái)nil測(cè)試 c 函數(shù)是否返回NULL. 試試下面的代碼:
package main
/*
#include <stdio.h>
#include <stdlib.h>
int* cfunc(int i) {
if (i == 0) {
return NULL;
}
int *p = (int*)malloc(sizeof(int));
*p = 100;
return p;
}
*/
import "C"
import "fmt"
import "unsafe"
func call_cfunc(i int32) {
ret := C.cfunc(C.int(i))
if ret == nil {
fmt.Println("nil")
} else {
fmt.Println(*ret)
C.free(unsafe.Pointer(ret))
}
}
func main() {
call_cfunc(0)
call_cfunc(1)
}
- 1 回答
- 0 關(guān)注
- 244 瀏覽
添加回答
舉報(bào)
0/150
提交
取消