【发布时间】:2016-11-27 07:26:47
【问题描述】:
我想创建一个“类”来处理输入验证。我首先创建了一个Input 类型,它是一个用于存储用户输入的字符串,以及一个REGP 类型,它存储正则表达式模式和模式描述。我创建了两个常量实例REGP_LOGINNAME 和REGP_PASSWORD。但我收到const initializer REGP literal is not a constant 的错误。为什么?
package aut
import "regexp"
type Input string
type REGP struct {
pattern string
Descr string
}
const REGP_LOGINNAME = REGP{ //const initializer REGP literal is not a constant
"regex pattern 1",
"regex description 1",
}
const REGP_PASSWORD = REGP{ //const initializer REGP literal is not a constant
"regex pattern 2",
"regex description 2",
}
func (i Input) isMatch(regp REGP) bool {
isMatchREGP, _ := regexp.MatchString(regp.pattern, string(i))
return isMatchREGP
}
错误信息:
/usr/local/go/bin/go build -i [/home/casper/gopath/codespace_v2.6.6/dev/server_side/golang/go_codespace_v2.1/server/lib/aut]
# _/home/casper/gopath/codespace_v2.6.6/dev/server_side/golang/go_codespace_v2.1/server/lib/aut
./validation.go:15: const initializer REGP literal is not a constant
./validation.go:20: const initializer REGP literal is not a constant
Error: process exited with code 2.
【问题讨论】:
-
有布尔常量、符文常量、整数常量、浮点常量、复数常量和字符串常量。 REGP 不是其中之一。
-
@JimB - 你的意思是我不能将自定义类型设为常量?你有什么想法让它看起来更好吗?
-
正确golang.org/ref/spec#Constants。大多数代码会使用一个变量,或者只是将正则表达式字符串设为 const
-
有没有办法将
pattern和Descr包装在一起形成全局变量? -
是的,您可以创建一个 REGP 类型的全局变量。