gpt4 book ai didi

performance - []byte(string) 有多贵?

转载 作者:IT老高 更新时间:2023-10-28 13:03:47 24 4
gpt4 key购买 nike

让我们转换 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com