Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
验证Golang中的区域设置字符串_Go_Locale - Fatal编程技术网

验证Golang中的区域设置字符串

验证Golang中的区域设置字符串,go,locale,Go,Locale,我正在尝试编写Go代码,以检查字符串是否表示有效的区域设置。从文档中,我了解到: import "golang.org/x/text/language" locale := "en" tag, err := language.Parse(locale) if err != nil { return errors.New("Invalid locale: " + locale) } 我认为这应该行得通,而且它似乎在大多数情况下都行得通,但它并不总是在我预期的时候给我一个错误。例如,如果

我正在尝试编写Go代码,以检查字符串是否表示有效的区域设置。从文档中,我了解到:

import "golang.org/x/text/language"

locale := "en"
tag, err := language.Parse(locale)
if err != nil {
    return errors.New("Invalid locale: " + locale)
}
我认为这应该行得通,而且它似乎在大多数情况下都行得通,但它并不总是在我预期的时候给我一个错误。例如,如果我说
locale:=“bcd”
,我不会得到错误


我在这里遗漏了什么?

bcd
是North Babar语言的有效ISO 639-3语言代码,扩展而言,它是一个有效的语言环境名称。

可能是您将有效的语言环境字符串与识别包已知语言环境的字符串混淆了吗?我的意思是,“bcd”在我看来是一个完全合法的地区名称。在相应的RFC中定义的语言环境命名规则很复杂,但它们对预定义的语言环境名称没有任何限制(这将是一件愚蠢的事情)。因此,如果您确实混淆了这些内容,我建议您深入到软件包的源代码中,看看如何将用户提供的区域设置名称与软件包已知的区域设置列表进行比较。您可以将此文件复制并粘贴到包中,然后进行编辑以适应需要