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

什么时候返回指向结构的指针是一个好主意?

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

什么时候返回指向结构的指针是一个好主意?

您需要牢记两点:性能和API。

如何使用汽车?它是具有状态的对象吗?它是一个大结构吗?不幸的是,当我不知道什么是汽车时,不可能回答。说实话,最好的方法是看看别人在做什么,然后照搬别人。最终,您对这种事情有了感觉。现在,我将描述标准库中的三个示例,并解释为什么我认为它们使用了所做的事情。

  1. hash/crc32
    :该
    crc32.NewIEEE()
    函数返回一个指针类型(实际上是一个接口,但是基础类型是一个指针)。哈希函数的实例具有状态。当您将信息写入哈希时,它会汇总数据,因此当您调用该
    Sum()
    方法时,它将为您提供该实例的状态。

  2. time
    :该
    time.Date
    函数返回一个
    Time
    结构。为什么?时间就是时间。它没有状态。它就像一个整数,您可以在其中进行比较,对它们进行数学运算等。API设计人员认为,对时间的修改不会更改当前时间,而是会修改一个新时间。作为图书馆的用户,如果我想从现在开始一个月的时间,我想要一个新的时间对象,而不是更改当前的时间对象。时间也只有3个字长。换句话说,它很小,并且使用指针不会提高性能。

  3. math/big
    :big.NewInt()是有趣的一个。我们几乎可以同意,当您修改时
    big.Int
    ,您通常会想要一个新的。A
    big.Int
    没有内部状态,那么为什么它是一个指针?答案仅仅是性能。程序员意识到,大智慧很重要。每次进行数学运算时,不断分配可能并不实际。因此,他们决定使用指针,并允许程序员决定何时分配新空间。

我回答了你的问题吗?可能不是。这是一个设计决策,您需要根据具体情况进行解决。在设计自己的库时,我以标准库为指南。实际上,所有这些都取决于判断以及您如何期望客户端代码使用您的类型。



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

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

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