使自定义结构类型的常量全局变量

卡斯珀:

我想创建一个“类”来处理输入验证。首先,我将其类型Input存储为用户输入的字符串,并将REGP其存储正则表达式模式和该模式的描述。我创建了两个常量实例REGP_LOGINNAMEREGP_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.
山姆·怀特(Sam Whited):

在Go Consants只能是标量值(例如2true3.14"and more"),或者仅由常量的任何表达(例如1 + 2"hello " + "world"2 * math.Pi * 1i)。

这意味着REGP_LOGINNAME不能将非标量值的结构类型(例如your)分配给常量。而是使用变量:

var (
    REGP_LOGINNAME = REGP{
        pattern: `/^(?=^.{6,20}$)^[a-zA-Z][a-zA-Z0-9]*[._-]?[a-zA-Z0-9]+$/`,
        Descr:   "regex description 1",
    }
    REGP_PASSWORD = REGP{
        pattern: `/^(?=^.{8,}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s)[0-9a-zA-Z!@#$%^&*()]*$/`,
        Descr:   "regex description 2",
    }
)

进一步阅读

除了:我当然不知道您的用例,但是我真的怀疑您实际上是否需要或想使用正则表达式来验证用户密码。相反,可以考虑通过PRECISOpaqueString配置文件(用于处理和加强unicode字符串安全性的框架;不透明的字符串配置文件旨在处理密码)传递它同样,UsernameCaseMapped和UsernameCasePreserved配置文件(也在链接包中实现)可用于用户名,以确保您不会以看起来相同但具有不同Unicode字符的两个用户名结尾。当然,也可以进行进一步的验证。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Woocommerce上访问自定义全局变量

React Native中的全局变量/常量

自定义类型的向量按其常量ID排序

跟踪全局变量上的所有自定义事件

使用未分配的局部变量:值类型与自定义结构

如何使用importlib加载具有自定义全局变量的Python模块?

定义全局变量

在Julia中定义常量全局变量

Laravel为所有自定义助手,控制器和模型设置全局变量

在rust中,如何定义值是函数结果的全局变量/常量?

Keras自定义损失函数访问python的全局变量时的内部机制是什么?

自定义内核不读取全局变量和char *

在自定义error_handler中为python的str()函数引用全局变量是否是可疑的做法?

Jenkins管道:如何从vars dir中的Groovy脚本访问自定义全局变量?

是否可以使用Keras从自定义损失函数调用/使用实例属性或全局变量?

CQ5自定义小部件开发-将我的硬编码值保留在小部件脚本之外-使用全局变量

全局变量定义失败

xml常量的自定义资源项目类型

从自定义转换器访问Mule全局变量

Python理解结构和全局变量

常量和全局变量之间的区别

在自定义Portlet中访问Liferay全局速度变量

将已定义结构的指针初始化作为全局变量

从自定义文件设置全局环境变量

常量变量和非常量全局变量之间的类型推断有何不同?

在不使用全局变量的情况下从自定义Inno Setup向导页面读取值

在自定义 webpack 插件中设置全局变量

打字稿中的自定义全局变量

定义自定义结构类型的数组