将返回值转换为特定类型

时间:2013-05-15 00:21:25

标签: go

我刚刚开始使用go,我遇到了以下“问题”。

我正在使用一个返回4个无符号32位整数的函数,我想知道在分配它们时将这些值转换为8位整数的最佳方法是什么。 (或者如果可能的话)。我已经通过将它们分配给uint32来实现它,然后在之后进行转换但是我想知道是否有更简洁的方法来实现它。

示例:

r, g, b, _ := image.At(x, y).RGBA() // ideally convert them at this stage

所以Image.At返回uint32,但我想r,g,b是uint8

由于

1 个答案:

答案 0 :(得分:4)

Go没有你想要的语法。你最好的选择就是在下一行中完成它。

rbig, gbig, bbig := image.At(x, y).RGBA()
r, g, b := uint8(rbig), uint8(gbig), uint8(bbig)

如果这真的让你感到烦恼,那么只需要做一个辅助功能

func convert(i, j, k, _ uint32) (uint8, uint8, uint8) { return uint8(i), uint8(j), uint8(k) }
r, g, b := convert(image.At(x, y).RGBA())

至少还有两行,但您可以在任何需要的地方重复使用该功能,并且呼叫站点可能看起来更清洁。