4

我刚刚开始使用 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

谢谢

4

1 回答 1

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())

仍然至少有两行,但您可以在需要的任何地方重复使用该功能,并且调用站点对您来说可能看起来更干净一些。

于 2013-05-15T02:16:18.967 回答