我有一个枚举的字符串列表(它们是常量,例如国家列表),我希望在提供枚举的 int 值时能够获取字符串,反之亦然能够获取枚举的 int 值提供字符串时。这是为了在数据库事务的两者之间进行转换。
var MyData = [...]string {
"string1", // index 0
"string2", // index 1
"string3", // index 2
}
对于像 python 这样的语言来说,这很容易,只需执行 MyData[1] 之类的操作即可获得 "string2" 和 MyData.index("string2") 以获得 1。
一些可能的解决方案是
编写我自己的函数以通过迭代数组/切片来获取索引
对数组/切片进行排序并使用搜索函数返回索引(尽管这不允许未排序的序列,这是我更喜欢的)
维护一个映射和一个彼此镜像的数组,这很容易出错。
说到地图,可以访问特定值的键吗?然后我可以简单地拥有一个如下所示的地图,并且能够在提供 int 值时获取字符串键。
var MyData = map[string]int {
"string1": 0,
"string2": 1,
"string3": 2,
}
更新:在我接受我的答案之前,我想更彻底地解释这个问题,我知道这一定是相当普遍的。我基本上有一组常量字符串(例如国家/地区列表),每个字符串都有一个关联的整数值。在我的数据库中,我只是存储整数以节省空间,因为有数百万个条目。但是当我显示数据库中的条目时,我需要显示字符串值以便用户可读。一个简单的数组就可以做到这一点。但是,我还需要向数据库添加条目(例如一个新人及其居住的国家/地区),并且在这种情况下需要从以表格形式输入的国家/地区字符串转换为该整数值。同样,这只是一个示例用例,但是目标保持不变。我需要一个可以在字符串值和枚举的 int 值之间双向转换的表。最明显的事情是维护一个数组(用于 int 到字符串的转换)和一个映射(用于字符串到 int 的转换)。我不想手动维护这两个变量,因为这很容易出错。所以我下面的解决方案是只维护一个数组,并在程序第一次运行时让构造函数方法在运行时自动构建映射。这样做的优点是,当我根据字符串(这是另一个建议的解决方案)获取整数值时,不需要遍历整个数组。
catspeake
拉风的咖菲猫
眼眸繁星
相关分类