Shi*_*ang 3 string command-line go command-line-arguments
我尝试"\t"从 shell 解析为TAB,但是,它不起作用。
这里我举一个简单的例子。
package main
import (
"flag"
"fmt"
)
func main() {
var sep string
flag.StringVar(&sep, "sep", " ", "separator")
flag.Parse()
fmt.Println("name" + sep + "xxx")
// separator is quoted by golang
fmt.Printf("%q\n", sep)
}
Run Code Online (Sandbox Code Playgroud)
结果:
$ go run main.go -sep '\t'
name\txxx
"\\t"
Run Code Online (Sandbox Code Playgroud)
有简单的解决方案吗?
\t是一个反斜杠转义符,表示制表符(例如在解释的字符串文字中)。如果您有反斜杠转义,您可以使用strconv.Unquote()它来“解码”它(转换为制表符)。
您必须知道的一件事:strconv.Unquote()要求其参数用引号引起来,例如您必须传递"\t"not simple \t。
sep, err := strconv.Unquote(`"` + sep + `"`)
if err != nil {
panic(err)
}
Run Code Online (Sandbox Code Playgroud)
添加此内容后,运行go run main.go -sep '\t',输出为:
name xxx
"\t"
Run Code Online (Sandbox Code Playgroud)
查看相关问题:
| 归档时间: |
|
| 查看次数: |
10620 次 |
| 最近记录: |