来到编程网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《无法正确读取包含转义符的选项字符串》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!
问题内容下面的测试程序使用具有像 \u00fc 这样的代码点的 default 字符串按需要工作, 以及该类型的代码点是否被编码为 prog 中的字符串。从 cmd 行传递相同的字符串,如: prog.exe -input="abc\u00fc" 则不会。我认为这是操作系统交互所以 尝试了其他引用,甚至像这样换行:“(abc\u00fc)”并修剪 func ng 内的括号。
“for _, runeread := range []rune”对于转义值是否不正确?
package main
import (
"fmt"
"flag"
"os"
)
var input string
var m = make(map[rune]struct{})
func init() {
flag.StringVar(&input, "input", "A7\u00FC", "string of runes")
m['A'] = struct{}{}
m['\u00FC'] = struct{}{}
m['7'] = struct{}{}
}
func main() {
flag.Parse()
ck(input) // cmd line - with default OK
ck("A\u00FC") // hard code - OK
}
func ck(in string) {
for _, runeRead := range []rune(in) {
fmt.Printf("DEBUG: Testing rune: %v %v\n", string(runeRead), byte(runeRead))
if _, ok := m[runeRead]; ! ok {
fmt.Printf("\nERROR: Invalid entry <%v>, in string <%s>.\n", string(runeRead), in)
os.Exit(9)
}
}
}
解决方案需要在 windows 和 linux 上运行。
解决方案
https://ss64.com/nt/syntax-esc.html
所以你应该这样做
prog.exe -input="ABC^\u00FC"
今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~