我正在使用來自Pflag libraray的StringSliceP,接受字符串列表作為CLI參數。我從Windows命令提示符調用Go應用程序。我希望列表中的某些字符串包含()雙引號字符,但我無法做到這一點。"轉義引號不起作用:goapp.exe --string-slice-list "a\"b",c,d,e預期結果:[]string{"a\"b", "c", "d", "e"}實際結果:Error: invalid argument "a\"\\b,c,d,e" for "--string-slice-list" flag: parse error on line 1, column 1: bare " in non-quoted-field將報價加倍不起作用:goapp.exe --string-slice-list "a""b",c,d,e預期結果:[]string{"a\"b", "c", "d", "e"}實際結果:Error: invalid argument "a\"b,c,d,e" for "--string-slice-list" flag: parse error on line 1, column 1: bare " in non-quoted-field
1 回答

回首憶惘然
TA貢獻1847條經驗 獲得超11個贊
以下是從Windows命令提示符執行此操作的方法:
goapp.exe --string-slice-list \"a\"\"b\",c,d,e
產量和[a"b c d e]
goapp.exe --string-slice-list \"a\\\"\"b\",c,d,e
確實如此(我不確定你真正想要哪一個)。[a\"b c d e]
正如已經指出的那樣,這樣做的原因是Pflag庫使用Go標準庫編碼/ csv來支持RFC 4180中描述的格式。如果我們從第5、6和7段中提到第2節:
如果字段未用雙引號括起來,則雙引號可能不會出現在字段中。
包含換行符 (CRLF)、雙引號和逗號的字段應括在雙引號中。
如果使用雙引號將字段括起來,則出現在字段內的雙引號必須通過在字段前面加上另一個雙引號來轉義。
- 1 回答
- 0 關注
- 112 瀏覽
添加回答
舉報
0/150
提交
取消