Sscanf函数

2019-06-20  本文已影响0人  不要重不要重

函数原型

//Sscanf scans the argument string, storing successive space-separated values
//into successive arguments as determined by the format.
//It returns the number of items successfully parsed.
//Newlines in the input must match newlines in the format.
func Sscanf(str string, format string, a ...interface{}) (n int, err error)

在做hex 转变 rgb 的时候,看了一段 go-colorful 的 代码, 遇到了一个格式化符号,%02x,以前没遇到过。

// Hex parses a "html" hex color-string, either in the 3 "#f0c" or 6 "#ff1034" digits form.
func Hex(scol string) (Color, error) {
        format := "#%02x%02x%02x"
        factor := 1.0 / 255.0
        if len(scol) == 4 {
                format = "#%1x%1x%1x"
                factor = 1.0 / 15.0
        }

        var r, g, b uint8
        n, err := fmt.Sscanf(scol, format, &r, &g, &b)
        if err != nil {
                return Color{}, err
        }
        if n != 3 {
                return Color{}, fmt.Errorf("color: %v is not a hex-color", scol)
        }

        return Color{float64(r) * factor, float64(g) * factor, float64(b) * factor}, nil
}

其实是把 #ff00ff 之类的转变为 r,g,b。 是个很简单的操作,在我做来,可能会用字符串分割,没想过这么用,记录一下
另外,记录一下bool类型的格式化符号是 %t.
最后,说一下 go 的优势,就是没有动态库,各种官方的库都可以随便看,随便学。我一点都不狂。。。哈哈哈哈哈哈。心情好。

上一篇下一篇

猜你喜欢

热点阅读