CGO 中对C语言的void *
和void **
的处理
1. void *
与unsafe.Pointer
- CGO中的
unsafe.Pointer
与C语言中的void *
是对应的 Go
中的结构体如果要传入C语言
的某个函数作为参数, 可以使用unsafe.Pointer
来转化
package main
/*
//假设这段定义在外部C源码中对cgo不可见
//typedef struct User {
// int id;
// int age;
// int number;
//} User;
static void User_SetId(void *user, int id) {
((User *)user)->id = id;
}
static void User_SetAge(void *user, int age) {
((User *)user)->age = age;
}
static void User_SetNumber(void *user, int number) {
((User *)user)->number = number;
}
*/
import "C"
import