1 回答
TA贡献1830条经验 获得超9个赞
您要避免的“大开关”语句已经写在标准库中。使用该fmt
包可以轻松地从字符串中解析原始值,特别是fmt.Sscan()
和fmt.Sscanf()
函数。
fmt.Sscan()
需要一个字符串值来解析一些东西,以及一个变量的地址来将解析的值放入。指向变量的类型还决定了从字符串中解析出什么以及如何解析。fmt.Sscan()
将返回成功解析的值的数量,以及一个可选的错误(如果出现问题)。
一个简单的例子:
var i int
if _, err := fmt.Sscan("12", &i); err != nil {
fmt.Println("Error:", err)
}
fmt.Println(i)
var f float32
if _, err := fmt.Sscan("12.2", &f); err != nil {
fmt.Println("Error:", err)
}
fmt.Println(f)
输出(在Go Playground上尝试):
12
12.2
另请注意,您可以使用 一步解析多个值fmt.Sscan(),例如:
var i int
var f float32
fmt.Println(fmt.Sscan("12 12.2", &i, &f))
fmt.Println(i, f)
这将打印(在Go Playground上尝试):
2 <nil>
12 12.2
第一行包含 : 的返回值fmt.Sscan(),告诉它解析了 2 个值,并且没有返回错误 ( nilerror)。第二行包含i和的解析值f。
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报