如何在Windows上使用基于cgo的程序包?

时间:2017-02-25 13:01:12

标签: windows go build

Go标准库中的regexp非常差,所以我需要一个更强大的引擎,比如Python中的正则表达式(pip install regex),支持递归,反向,前瞻/后退等等......

我发现: https://godoc.org/github.com/dlclark/regexp2 .NET兼容,这很好;但是,递归不能正常工作。

和PCRE的几个绑定,例如: https://godoc.org/github.com/glenn-brown/golang-pkg-pcre/src/pkg/pcre

那么,如何在Win64上使用此绑定?

1 个答案:

答案 0 :(得分:0)

您可以考虑使用C ++标准库std::regex(没有第三方库)。在try块中包装逻辑,使用catch(...){return ERROR;}捕获任何错误,并声明C函数extern "C",以便您可以使用cgo进行调用。

来自https://github.com/golang/go/wiki/cgo(关于Windows的部分内容):

  

要在Windows上使用cgo,您还需要先安装一个   gcc编译器(例如,mingw-w64)并且你的gcc.exe(等等)   在使用cgo编译之前,PATH环境变量将起作用。

话虽这么说,我仍然认为你应该考虑坚持使用regexp包并尝试使正则表达式尽可能简单。因为复杂的正则表达式可能会损害代码的可读性。另一个问题是有时它们会引入难以发现和修复的细微错误。因此,在Go中编写更多代码而不是正则表达式可能会让生活更轻松。