2

编辑:Jeremy Wall 帮助我意识到我问的问题比我预期的更具体;这是一个更好的版本。

假设我想表示一个表,该表将某种类型 B 的值与定义了相等性的某种类型 A 的值序列相关联。在 Go 中最好的方法是什么?

显然,对于表,我想使用 Go 映射,但是对于 A 类型的值序列,我可以使用什么?在 Go 中,切片不能用作 map 的键;数组可以,但是数组的长度是它类型的一部分,我对能够使用在运行时确定的长度序列感兴趣。我可以 (1) 使用 A 的数组为它们声明最大长度,或者 (2) 使用 A 的切片,将它们序列化为字符串以用作键(Awk 和 Lua 程序员熟悉这种技术......)。Go 的这个“特性”有没有比我描述的更好的解决方法?

正如 Jeremy Wall 在回答我原来的问题版本时指出的那样,我有 A = int,选项 (2) 对于整数来说非常好,因为您可以使用符文切片,将其转换为字符串只是一个强制转换。

4

1 回答 1

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

于 2012-04-12T02:33:35.727 回答