Любая функция C (даже пустые функции) может быть вызвана в контексте множественного присваивания, чтобы получить как возвращаемое значение (если оно есть), так и переменную C errno в качестве ошибки (используйте _, чтобы пропустить значение результата, еслифункция возвращает void).
Тогда в вашем коде c все, что вам нужно сделать, это установить «глобальную» переменную errno.
package main
// #include <errno.h>
// int fortytwo()
// {
// errno = ENOENT;
// return 42;
// }
import "C"
import "fmt"
func main() {
n, err = C.fortytwo()
}