我正在尝试使用sscanf来解析多个字符串字段。以下是一个示例代码段:
package main
import "fmt"
func main() {
var name, currency string
_, err := fmt.Sscanf("transaction benson: dollars", "transaction %s: %s", &name, ¤cy)
fmt.Println(err, name, currency)
}
输出
input does not match format benson:
Program exited.
答案 0 :(得分:6)
%s
贪婪,吞噬下一个空间,这意味着它吃掉了冒号。在处理%s
之后,它会尝试在冒号中扫描,但等待,已经消耗掉了,下一个字符实际上是一个空格,而不是冒号!所以它失败了。
在C中,您可以使用%[^:]
而非%s
来解决此问题,但看起来Go不支持此功能。您可能需要找到一些方法来解析不带Sscanf
的字符串。