栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

类型转换在内部如何工作?相同的内存利用率是多少?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

类型转换在内部如何工作?相同的内存利用率是多少?

在Go中称为 转换 (不是强制转换),这在“
规范:转换”中进行了介绍:

特定规则适用于数字类型之间或字符串类型之间的(非恒定)转换。这些转换可能会更改的表示形式

x
并产生运行时成本。所有其他转换只会更改类型,而不会更改的表示形式
x

因此,通常转换不会复制,而只会更改类型。

string
由于
string
值是不可变的,因此通常将/转换为from
,例如,如果将a转换
string
[]byte
不会复制,则可以
string
通过更改结果字节片的元素来更改a的内容。

如果您已经拥有

string
要解组的JSON内容作为值,则不应
[]byte
仅出于解组就将其转换为。而是使用
strings.NewReader()
获取
io.Reader
从传递的
string
值读取的,然后将此读取器传递给
json.NewDeprer()
,这样您就可以取消封送,而不必复制大型输入JSON字符串。

它看起来像这样:

input := "BIG JSON INPUT"dec := json.NewDeprer(strings.NewReader(input))var result YourResultTypeif err := dec.Depre(&result); err != nil {    // Handle error}

还要注意,如果从读取大JSON字符串,则可以进一步优化此解决方案

io.Reader
,在这种情况下,您可以完全省略首先读取它,而
json.NewDeprer()
直接将其传递给,例如:

dec := json.NewDeprer(jsonSource)var result YourResultTypeif err := dec.Depre(&result); err != nil {    // Handle error}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406457.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号