作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
让我们转换 string
至[]byte
:
func toBytes(s string) []byte {
return []byte(s) // What happens here?
}
这种 Actor 阵容有多贵?是否执行复制?据我在 Go 规范中看到的:字符串的行为类似于字节 slice ,但不可变,这至少应该涉及复制,以确保后续 slice 操作不会修改我们的字符串 s
.反向对话会发生什么?是否 []byte <-> string
对话涉及编码/解码,比如utf8 <-> runes?
最佳答案
[]byte(s)
不是强制转换,而是 conversion .一些转换与强制转换相同,例如 uint(myIntvar)
,它只是重新解释位就地。不幸的是,字符串到字节 slice 转换的情况并非如此。字节 slice 是可变的,字符串(准确地说是字符串值)不是。结果是正在制作的字符串的必要副本(内存分配+内容传输)。所以是的,在某些情况下它可能会很昂贵。
编辑:不执行编码转换。字符串(源)字节按原样复制到 slice (目标)字节。
关于performance - []byte(string) 有多贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14373634/
我正在对 pandas DataFrame 创建进行基准测试,发现它比创建 numpy ndarray 更昂贵。 基准代码 from timeit import Timer setup = """ i
我是一名优秀的程序员,十分优秀!