我刚刚开始使用 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
谢谢
最佳答案
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())
仍然是最少两行,但您可以在任何需要的地方重用该函数,并且调用站点对您来说可能看起来更简洁一些。
关于go - 将返回值转换为特定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16554830/