
Use go/packages instead of x/tools/loader: it allows to work with go modules and speedups loading of packages with the help of build cache. A lot of linters became "fast": they are enabled by --fast now and work in 1-2 seconds. Only unparam, interfacer and megacheck are "slow" linters now. Average project is analyzed 20-40% faster than before if all linters are enabled! If we enable all linters except unparam, interfacer and megacheck analysis is 10-20x faster!
24 lines
287 B
Go
24 lines
287 B
Go
package cgoexample
|
|
|
|
/*
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
void myprint(char* s) {
|
|
printf("%s\n", s);
|
|
}
|
|
*/
|
|
import "C"
|
|
|
|
import (
|
|
"fmt"
|
|
"unsafe"
|
|
)
|
|
|
|
func Example() {
|
|
cs := C.CString("Hello from stdio\n")
|
|
C.myprint(cs)
|
|
fmt.Printf("bad format %t", cs)
|
|
C.free(unsafe.Pointer(cs))
|
|
}
|