String 如何在golang中将“\t”读取为选项卡

String 如何在golang中将“\t”读取为选项卡,string,go,command-line,command-line-arguments,String,Go,Command Line,Command Line Arguments,我试图将shell中的\t作为选项卡进行分析,但是,它不起作用 这里我举一个简单的例子 包干管 进口 旗帜 fmt func main{ 变量sep字符串 标记StringVar和sep,sep,分隔符 flag.Parse 格式打印名称+sep+xxx //分离器引用了golang的话 fmt.Printf%q\n,九月 } 结果是: $ go run main.go -sep '\t' name\txxx "\\t" 有一个简单的解决方案吗?\t是一个反斜杠转义,表示制表符,例如在解释的字

我试图将shell中的\t作为选项卡进行分析,但是,它不起作用

这里我举一个简单的例子

包干管 进口 旗帜 fmt func main{ 变量sep字符串 标记StringVar和sep,sep,分隔符 flag.Parse 格式打印名称+sep+xxx //分离器引用了golang的话 fmt.Printf%q\n,九月 } 结果是:

$ go run main.go -sep '\t'
name\txxx
"\\t"
有一个简单的解决方案吗?

\t是一个反斜杠转义,表示制表符,例如在解释的字符串文本中。如果有反斜杠转义,可以使用将其解码为制表符

有一件事您必须知道:strconv.Unquote要求其参数用引号括起来,例如,您必须传递\t而不是简单地传递\t

通过此添加,运行go-run main.go-sep'\t',输出为:

name    xxx
"\t"
见相关问题:


在我看来这是正确的。执行fmt.PrintlnHello\t world将是文本中的一个选项卡。输出控制台如何解释这是一个不同的问题。至少在bash和zsh中:go run main.go-sep$'\t'。这将使shell解释\t并将单个字节0x09传递给go。不需要特殊代码。@C4d谢谢。我知道这是正确的,我关心如何通过控制输入输出制表符。@Peter谢谢,这确实适用于包括git bash在内的shell。@ShixiangWang哦,我刚刚意识到了这个问题。它被转义并打印出来。对不起,我误解了。
name    xxx
"\t"