下面的测试程序使用具有类似 \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。
素胚勾勒不出你
森林海
相关分类