Go 将返回的值转换为特定类型

Go 将返回的值转换为特定类型,go,Go,我刚刚开始围棋,我遇到了以下“问题” 我正在使用一个返回4个无符号32位整数的函数,我想知道在赋值时,将这些值转换为8位整数的最佳方法是什么。(如果可能的话)。我把它们分配到uint32,然后再转换它们,这样就可以工作了,但我想知道是否有更简洁的方法来完成它 例如: r, g, b, _ := image.At(x, y).RGBA() // ideally convert them at this stage 所以图像,返回uint32,但我希望r,g,b是uint8 谢谢Go没有你想要的语

我刚刚开始围棋,我遇到了以下“问题”

我正在使用一个返回4个无符号32位整数的函数,我想知道在赋值时,将这些值转换为8位整数的最佳方法是什么。(如果可能的话)。我把它们分配到uint32,然后再转换它们,这样就可以工作了,但我想知道是否有更简洁的方法来完成它

例如:

r, g, b, _ := image.At(x, y).RGBA() // ideally convert them at this stage
所以图像,返回uint32,但我希望r,g,b是uint8


谢谢

Go没有你想要的语法。你最好的办法就是在下一行做

rbig, gbig, bbig := image.At(x, y).RGBA()
r, g, b := uint8(rbig), uint8(gbig), uint8(bbig)
如果这真的让你恼火,那就做一个helper函数吧

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

仍然至少有两行代码,但您可以在任何需要的地方重用该函数,调用站点对您来说可能更干净。

该函数返回
uint32
中的整数。手动将它们转换为
uint8
有什么问题?还有,
uint32
有什么问题吗?太好了。谢谢你的建议。我可能会走功能路线。