我刚刚开始使用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
由于
答案 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())
至少还有两行,但您可以在任何需要的地方重复使用该功能,并且呼叫站点可能看起来更清洁。