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 的优势,就是没有动态库,各种官方的库都可以随便看,随便学。我一点都不狂。。。哈哈哈哈哈哈。心情好。