在golang颜色包中,有一种方法可以从RGBA对象中获取r,g,b,一个值:
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
}
Run Code Online (Sandbox Code Playgroud)
如果我要实现这个简单的函数,我会写这个
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
}
Run Code Online (Sandbox Code Playgroud)
是什么原因r |= r << 8使用?
我们可以通过获取字符串转换的符文切片的长度来获取字符串中符文的数量。
\n\ns := "\xe4\xb8\x96\xe7\x95\x8c"\nrunes := []rune(s)\nfmt.Println(len(runes))\nRun Code Online (Sandbox Code Playgroud)\n\n或者使用包RuneCountInString中的函数unicode/utf8。
fmt.Println(utf8.RuneCountInString(s))\nRun Code Online (Sandbox Code Playgroud)\n\n两者有什么区别?
\n