在 Golang 的 color 包中,有一个方法可以从
RGBA
对象中获取 r、g、b、a 值:func (c RGBA) RGBA() (r, g, b, a uint32) {
r = uint32(c.R)
r |= r << 8
g = uint32(c.G)
g |= g << 8
b = uint32(c.B)
b |= b << 8
a = uint32(c.A)
a |= a << 8
return
}
如果我要实现这个简单的函数,我会写成这样
func (c RGBA) RGBA() (r, g, b, a uint32) {
r = uint32(c.R)
g = uint32(c.G)
b = uint32(c.B)
a = uint32(c.A)
return
}
为什么要使用r |= r << 8
?