1 回答
TA贡献1810条经验 获得超4个赞
"\x41BC"是一个带引号的字符串。该flag包不会取消任何引用,它只会将启动应用程序时指定的参数交给您。您可以使用strconv.Unquote()和strconv.UnquoteChar()函数来取消引用它们。
您应该注意的一件事是,strconv.Unquote()只能取消引号中的字符串(例如,以引号字符"或反引号字符开头和结尾`),因此我们必须手动附加它。
看这个例子:
s := `\x41BC`
fmt.Println(s)
s2, err := strconv.Unquote(`"` + s + `"`)
if err != nil {
panic(err)
}
fmt.Println(s2)
输出(在Go Playground上试试):
\x41BC
ABC
因此,如果您希望能够提供带引号的字符串作为命令行参数并且仍然具有未引用的值,则必须strconv.Unquote()在调用后取消引用它们flag.Parse(),例如:
var param string
flag.StringVar(¶m, "param", "", "the param with hex chars")
flag.Parse()
var err error
param, err = strconv.Unquote(`"` + param + `"`)
if err != nil {
panic(err) // handle error
}
// param now contains the unquoted argument value
- 1 回答
- 0 关注
- 157 浏览
添加回答
举报