go - 将返回值转换为特定类型

标签 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

谢谢

最佳答案

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/

相关文章:

javascript - 将参数传递给 Go IIFE(以下 javascript 示例)

go - kubectl 如何配置 CRD?

garbage-collection - 有没有一种安全的方法可以使用 CGo 从 C 代码中保留对 Go 变量的引用?

go - 欺骗 grpc UnaryHandler 以在 Go 中对 gRPC 进行单元测试

go - 逐步计算

docker - 如何从 docker-compose 命令 : 运行 2 个不同的命令

go - Go中的列表目录

ios - 为什么 Golang 将我的 POST 请求视为 GET 请求?

go - IPAddr 类型的字符串方法

windows - Golang : HTTP deployment under Windows