我正在编写一个射线表面碰撞函数,该函数需要返回小的结构(Collision
包含一些有关碰撞的信息)。当前,由于不需要调整或共享collision
的内容,因此我将按值返回struct。但是,有时光线实际上不会碰撞,因此我的函数签名当前看起来像:
func (scene *Scene) GetFirstCollision(ray *Ray) (Collision, bool)
没有冲突时,布尔值为假。但是,我不知道没有冲突时Collision
应该取什么值。如果它是一个指针,我只会返回nil
,但不是,所以我应该返回Collision{}
吗?如果总体上更惯用的方式只是返回*Collision
并在不存在时返回nil
,那么我也很乐意,我想不出何时需要指向该指针的情况。碰撞。
以我的拙见...
如果按用例返回重要值is返回冲突,请继续使用(Collision, bool)
的返回类型,并在没有冲突时简单地执行return Collision{}, false
。
如果通过用值返回冲突[[不是对您的用例很重要,只需返回*Collision
,其中nil
返回类型表示“无冲突”,如您所描述。