in my go file: package main import "C"
// AddListener ... //export AddListener type AddListener interface { addResult(i int) } func main() { } // Add ... //export Add func Add(i, j int) int { return i + j } // Add2 ... //export Add2 func Add2(i, j int, listener AddListener) { listener.addResult(i + j) } and build: go build -o ../test/iamfan -buildmode=c-shared ./main.go two files are generated. iamfan and iamfan.h /* Code generated by cmd/cgo; DO NOT EDIT. */ /* package command-line-arguments */ #line 1 "cgo-builtin-export-prolog" #include <stddef.h> /* for ptrdiff_t below */ #ifndef GO_CGO_EXPORT_PROLOGUE_H #define GO_CGO_EXPORT_PROLOGUE_H #ifndef GO_CGO_GOSTRING_TYPEDEF typedef struct { const char *p; ptrdiff_t n; } _GoString_; #endif #endif /* Start of preamble from import "C" comments. */ /* End of preamble from import "C" comments. */ /* Start of boilerplate cgo prologue. */ #line 1 "cgo-gcc-export-header-prolog" #ifndef GO_CGO_PROLOGUE_H #define GO_CGO_PROLOGUE_H typedef signed char GoInt8; typedef unsigned char GoUint8; typedef short GoInt16; typedef unsigned short GoUint16; typedef int GoInt32; typedef unsigned int GoUint32; typedef long long GoInt64; typedef unsigned long long GoUint64; typedef GoInt64 GoInt; typedef GoUint64 GoUint; typedef __SIZE_TYPE__ GoUintptr; typedef float GoFloat32; typedef double GoFloat64; typedef float _Complex GoComplex64; typedef double _Complex GoComplex128; /* static assertion to make sure the file is being used on architecture at least with matching size of GoInt. */ typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1]; #ifndef GO_CGO_GOSTRING_TYPEDEF typedef _GoString_ GoString; #endif typedef void *GoMap; typedef void *GoChan; typedef struct { void *t; void *v; } GoInterface; typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; #endif /* End of boilerplate cgo prologue. */ #ifdef __cplusplus extern "C" { #endif // Add ... extern GoInt Add(GoInt p0, GoInt p1); // Add2 ... extern void Add2(GoInt p0, GoInt p1, GoInterface p2); #ifdef __cplusplus } #endif in my c file: #include <stdio.h> #include "iamfan.h" void result(int i) { printf("result from go: %i\n", i); } int main() { GoInt addResult; addResult = Add(5, 8); printf("add result: %lli\n", addResult); GoInterface face; // ??? // please help me. Add2(2, 6, face); return 0; } How to use add2 function, i am very troubled. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/3f425f36-8610-4954-946a-72c8aac63d05%40googlegroups.com.