我正在尝试在Go中编写一个正则表达式,以验证字符串仅包含字母数字,句点和下划线。但是,我遇到了一个从未见过的错误,并且在Googling上未成功。
这是正则表达式:

pattern = regexp.MustCompile(`^[A-Za-z0-9_\.]+`)
这是错误:
const initializer regexp.MustCompile("^[A-Za-z0-9_\\.]+") is not a constant
“非常数”是什么意思,该如何解决?

最佳答案

当您尝试分配给常量类型不能为常量的常量时(例如Regexp),就会发生这种情况。只有诸如intstring等的基本类型可以是常量。有关更多详细信息,请参见here
例子:

pattern = regexp.MustCompile(`^[A-Za-z0-9_\.]+`)
// which translates to:
const pattern = regexp.MustCompile(`^[A-Za-z0-9_\.]+`)
您必须将其声明为var才能起作用:
var pattern = regexp.MustCompile(`^[A-Za-z0-9_\.]+`)
另外,我通常会注意说变量被视为常量:
var /* const */ pattern = regexp.MustCompile(`^[A-Za-z0-9_\.]+`)

关于regex - 正则表达式 “is not a constant”编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37976076/

10-15 08:34