【发布时间】:2017-04-02 04:24:16
【问题描述】:
Go 的字符串映射键有最大长度吗? 其实我用https://github.com/OneOfOne/cmap而不是Go的地图。
问题是,我在 cmap 中使用的密钥长度约为 200-4000 个字符,这会是一个问题/陷阱吗?
import "github.com/kokizzu/gotro/I"
import "sync/atomic"
var CACHE_IDX int64
var CACHE_KEYS cmap.CMap
func init() {
CACHE_KEYS = cmap.New()
}
// change a really long string to a shorter one
func RamKey_ByQuery(query string) string {
nkey := CACHE_KEYS.Get(query)
if nkey != nil {
return nkey.(string)
}
new_idx := atomic.AddInt64(&CACHE_IDX, 1)
ram_key := `:` + I.ToS(new_idx) // convert integer to string
CACHE_KEYS.Set(query, ram_key)
return ram_key
}
【问题讨论】:
-
您的问题是关于 Go 的内置地图类型还是关于 cmap?对于 Go:阅读规范。如果地图密钥长度没有限制(没有),那么就没有限制。对于 cmap:为什么不问问作者呢?
-
顺便说一句:您的代码中有几个陷阱,但与映射键长度无关。
-
因为cmap内部使用map