小编Wan*_* Ke的帖子

为什么golang RGBA.RGBA()方法使用| 和??

在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使用?

bit-manipulation go

9
推荐指数
2
解决办法
2107
查看次数

符文切片长度和 RuneCountInString 之间的区别?

我们可以通过获取字符串转换的符文切片的长度来获取字符串中符文的数量。

\n\n
s := "\xe4\xb8\x96\xe7\x95\x8c"\nrunes := []rune(s)\nfmt.Println(len(runes))\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者使用包RuneCountInString中的函数unicode/utf8

\n\n
fmt.Println(utf8.RuneCountInString(s))\n
Run Code Online (Sandbox Code Playgroud)\n\n

两者有什么区别?

\n

utf-8 go rune

3
推荐指数
1
解决办法
2531
查看次数

标签 统计

go ×2

bit-manipulation ×1

rune ×1

utf-8 ×1