在 Cgo 中调用带 const char* 参数的 C 回调函数时Go 无法直接导出匹配 const 修饰符的函数导致类型冲突本文提供兼容、安全且符合 CGO 规范的解决方案。 在 cgo 中调用带 const char* 参数的 c 回调函数时go 无法直接导出匹配 const 修饰符的函数导致类型冲突本文提供兼容、安全且符合 cgo 规范的解决方案。当通过 Cgo 将 Go 函数作为回调注册给 C 库时若 C 端函数签名含 const char*如 void cb(const char*, int)直接在 Go 中声明 func myFunc(buf *C.char, ln C.int) 会导致编译失败——因为 Cgo 自动生成的 _cgo_export.c 中会将 Go 导出函数声明为 char*无 const与头文件中 const char* 声明冲突触发「conflicting types」错误。根本原因在于Cgo 不支持在 //export 函数的 C 签名中保留 const 限定符。*C.char 在 Go 中始终对应非 const 的 char*而 C 编译器对 const char* 和 char* 视为不兼容类型尤其在函数指针赋值场景下。? 正确解法通过 typedef 定义带 const 的别名类型并在 Go 中使用该别名指针以下为完整可运行示例test.go Zeemo AI 一款专业的视频字幕制作和视频处理工具