String GoLang'中是否有任何字符串长度限制;s字符串映射键?

String GoLang'中是否有任何字符串长度限制;s字符串映射键?,string,go,hashtable,String,Go,Hashtable,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() } /

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文档,
len()
函数必须与返回
int
string
兼容。int类型在32位系统上通常为32位宽,在64位系统上通常为64位宽

因此,有符号的
int
的范围是
-2^(n-1)~2^(n-1)-1
。因为长度不能为负,所以它应该是
0~2^(n-1)-1


Ref-

根据go文档,
len()
函数必须与返回
int
字符串兼容。int类型在32位系统上通常为32位宽,在64位系统上通常为64位宽

因此,有符号的
int
的范围是
-2^(n-1)~2^(n-1)-1
。因为长度不能为负,所以它应该是
0~2^(n-1)-1


Ref-

您的问题是关于Go的内置地图类型还是关于cmap?对于Go:阅读规范。如果地图键长度没有限制(没有),那么就没有限制。对于cmap:为什么不问问作者?顺便说一句:您的代码中有几个gotcha,但与映射键长度无关。因为cmap内部使用MAPI,您的问题是关于Go的内置映射类型还是关于cmap?对于Go:阅读规范。如果地图键长度没有限制(没有),那么就没有限制。对于cmap:为什么不问问作者?顺便说一句:你的代码中有几个gotcha,但与映射键长度无关。因为cmap内部使用mapSo进行64位系统,我想字符串可以是math.MaxInt64个字符长,在我的电脑上是9223372036854775807。出于好奇,我在Quora中发现了这一点:一本250页的典型精装书包含大约500k个字符(包括空格)。因此对于64位系统,我假设一个字符串可以是math.MaxInt64个字符长,在我的电脑上是9223372036854775807。出于好奇,我在Quora中发现了这一点:一本250页的典型精装书包括空格在内大约有500k个字符。