See https://github.com/lukeroth/gdal/pull/102 for solution.
You can just modify the local "algorithms.go" by yourself.
return CPLErr(C.GDALContourGenerate(
src.cval,
C.double(interval),
C.double(base),
C.int(len(fixedLevels)),
fixedLevels_p,
C.int(useNoDataValue),
C.double(noDataValue),
unsafe.Pointer(layer.cval),
C.int(idFieldIndex),
C.int(elevationFieldIndex),
C.goGDALProgressFuncProxyB(),
unsafe.Pointer(arg),
)).Err()
to
cErr := C.GDALContourGenerate(
src.cval,
C.double(interval),
C.double(base),
C.int(len(fixedLevels)),
fixedLevels_p,
C.int(useNoDataValue),
C.double(noDataValue),
unsafe.Pointer(layer.cval),
C.int(idFieldIndex),
C.int(elevationFieldIndex),
C.goGDALProgressFuncProxyB(),
unsafe.Pointer(arg),
)
return CPLErrContainer{ErrVal: cErr}.Err()