我正在写作vector.go作为我程序的一部分。它提供了一个三维vector结构体和一些向量操作。为了与一般vector类型对称,我想提供一个scalar类型:type scalar float64我喜欢这个,因为我没有理由每次都指定标量的精度。它们是 64 位的这一事实是一个我宁愿只指定一次的细节。唯一的问题是我知道这不像typedef在 C 中那样。在幕后似乎还有更多事情要做。我的问题:这会产生任何开销吗?如果有,什么时候,多少?当性能绝对至关重要时,我可以使用它吗?(假设我将替换所有出现的float64withscalar并转换文字,例如,scalar(1.0)。)
1 回答
HUH函数
TA贡献1836条经验 获得超4个赞
首先,不需要转换文字。x = 1.0
与x = scalar(1.0)
假设 x 已经具有类型标量相同。
在 Go 中,没有用户定义的类型别名这样的东西。在 Go 中,byte 和 uint8(它们是内置类型)被认为是彼此的别名。它们是同一类型的两个名称。Float64 和标量不是同一种类型。float64 和 scalar 的值需要使用诸如s = scalar(f)
而 byte 和 uint8 之类的东西相互转换。
但是,此类转换没有开销。这些类型在编译时强制执行以确保代码正确性,但不会影响执行期间的性能。仅当您输入断言或使用反射时,执行才会受到影响。但是,这些差异会影响逻辑,而不是性能。
当性能绝对至关重要时,我可以使用它吗?
是的
- 1 回答
- 0 关注
- 196 浏览
添加回答
举报
0/150
提交
取消