登录
首页 >  Golang >  Go问答

惯用的 Go 返回无效结构的方法

来源:stackoverflow

时间:2024-03-14 20:24:26 348浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《惯用的 Go 返回无效结构的方法》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我正在编写一个光线表面碰撞函数,需要返回小结构(collision 包含有关碰撞的一些信息)。目前,我按值返回结构,因为我不需要调整或共享 collision 的内容。但是,有时光线实际上不会发生碰撞,因此我的函数签名当前如下所示:

func (scene *Scene) GetFirstCollision(ray *Ray) (Collision, bool)

当没有碰撞时,布尔值为假。但是,我不知道在没有碰撞时 collision 应该取什么值。如果它是一个指针,我只会返回 nil,但它不是,所以我应该返回 collision{} 吗?如果总体上更惯用的方法只是返回 *collision 并在它不存在时返回 nil ,我也对此持开放态度,我只是想不出需要指向碰撞的指针的情况。


解决方案


以我的拙见......

  • 除非返回指针对您的用例很重要,否则请继续使用 (Collision, bool) 的返回类型,并在没有碰撞时简单地执行 return Collision{}、 false

  • 如果将碰撞作为指针返回对您的用例来说很重要,则只需返回 *Collision,其中 nil 返回类型表示“无碰撞”,正如您所描述的那样。

据我所知,光线追踪的性能非常好,因此您可能有真正的理由选择第一个选项。

以上就是《惯用的 Go 返回无效结构的方法》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>