我试图在GO中编写一个正则表达式,以验证字符串是否只有字母数字、句点和下划线.然而,我遇到了一个我以前从未见过的错误,在谷歌上搜索也没有成功.

下面是regex:

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_\.]+`)

Go相关问答推荐

如何在定制普罗米修斯出口商中测试动态计量注册?

追加一个字节数组的分配比2个字节数组的分配要少得多

Golang应用程序:所请求的资源上不存在HTTP-Control-Allow-Origin标头

未对GoFr中的所有请求进行跟踪

使用!NOT运算符的Golang文本/模板多个条件

包裹网.Conn导致挂起读取

如何根据中间件的请求设置上下文值?获取 go-staticcheck 问题

转到 bufio.Writer、gzip.Writer 并上传到内存中的 AWS S3

我的神经网络(从头开始)训练,让它离目标更远

如何将元素从一个切片移动到另一个切片

CORS grpc 网关 GoLang

如何将 npm 安装进度条通过管道传输到终端?

Golang并发写入多个文件

try 与 golang testify/suite 并行运行测试失败

将 Golang Gin 与 AWS Lambda 和无服务器与代理路径一起使用

为什么 x/net/html Token().Attr 上的 len 在此处为空切片返回非零值?

具有相同提前返回语句的函数的不同基准测试结果

在 golang 中联合一个接口和类型

在 Go 中将十六进制转换为带符号的 Int

Go/Golang:如何从 big.Float 中提取最低有效数字?