[!cgo] skip 'this test requires cgo to be enabled' env GOGARBLE=test/main garble build exec ./main cmp stdout main.stdout ! binsubstr main$exe 'PortedField' [short] stop # no need to verify this with -short env GOGARBLE=* garble build exec ./main cmp stdout main.stdout env GOGARBLE=test/main garble -tiny build exec ./main cmp stdout main.stdout go build exec ./main cmp stdout main.stdout binsubstr main$exe 'privateAdd' -- go.mod -- module test/main go 1.18 -- main.go -- package main import "os/user" /* static int privateAdd(int a, int b) { return a + b; } extern void goCallback(); static void callGoCallback() { goCallback(); } struct portedStruct { char* PortedField; }; */ import "C" import "fmt" func main() { fmt.Println(C.privateAdd(C.int(1), C.int(2))) _, _ = user.Current() st := C.struct_portedStruct{} fmt.Println(st.PortedField == nil) C.callGoCallback() } //export goCallback func goCallback() { fmt.Println("go callback") } -- main.stdout -- 3 true go callback