编辑:Jeremy Wall帮助我意识到我提出的问题比我预想的更具体;这是一个更好的版本。
假设我想表示一个表,该表将某些类型B的值与某些类型A的值序列相关联,并为其定义了相等性。 Go中最好的方法是什么?
显然,对于表格,我想使用Go地图,但是我可以使用哪种类型的A值序列?切片不能用作Go中地图的键;数组可以,但数组的长度是它的类型的一部分,我有兴趣能够使用在运行时确定的长度序列。我可以(1)使用A的数组来声明它们的最大长度,或者(2)使用A的切片,将它们序列化为字符串以用作键(这种技术对于Awk和Lua程序员来说是熟悉的......)。 Go的这个“特征”是否比我描述过的更好?
正如杰里米·沃尔在回答问题的原始版本时指出的那样,我有A = int,选项(2)对于整数是非常好的,因为你可以使用符文片段转换为字符串只是演员。
答案 0 :(得分:1)
一系列符文而不是整数是否适合你?符文是uint32,转换为字符串只是一个演员:
package main
import "fmt"
type myKey struct {
seq []int
}
func main() {
m := make(map[string]string)
key := []rune{1, 2}
m[string(key)] = "foo"
fmt.Print("lookup: ", m[string(key)])
}
您可以在此处使用此代码:http://play.golang.org/p/Kct1dum8A0