Windows 在Go中读取XML文件

Windows 在Go中读取XML文件,windows,file,go,Windows,File,Go,我在Go中编写了一个小代码,我认为它足以读取XML文件 有人知道发生了什么事吗 XML文件: <Lang> <Name> Go </Name> <Year> 2009 </Year> <URL> http://golang.org/ </URL> </Lang> 双引号之间的字符串文字是解释的字符串文字,其中反斜杠是表示转义序列的特殊字符。见: 引号之间的文本构成文本的值,

我在Go中编写了一个小代码,我认为它足以读取XML文件

有人知道发生了什么事吗

XML文件:

<Lang>
    <Name> Go </Name>
    <Year> 2009 </Year>
    <URL> http://golang.org/ </URL>

</Lang>

双引号之间的字符串文字是解释的字符串文字,其中反斜杠是表示转义序列的特殊字符。见:

引号之间的文本构成文本的值,反斜杠转义按其所在位置进行解释,除了\'是非法的,并且\是合法的,具有相同的限制

两次引用你的反斜杠:

input, err := os.Open("C:\\GoWork\\toy\\lang.xml")
或者更简单:在反斜杠没有特殊含义的地方使用原始字符串文字反斜杠:

input, err := os.Open(`C:\GoWork\toy\lang.xml`)
此外,您还应关闭您的文件,最好是作为递延声明:

input, err := os.Open(`C:\GoWork\toy\lang.xml`)
if err != nil {
    log.Fatal(err)
}
defer input.Close()
io.Copy(os.Stdout, input)

目前,这是两种文字形式的混合

input, err := os.Open("C:\GoWork\toy\lang.xml")
基本上有两种形式的字符串文字: A.原始字符串文本 B解释字符串文本

或者使用带反引号的原始字符串literal,如在'foo'中,literal的值在引号之间没有特殊含义

或使用双引号解释的字符串文字,如在bar中,但请注意,因为该值被解释为在中

input, err := os.Open(`C:\GoWork\toy\lang.xml`)
if err != nil {
    log.Fatal(err)
}
defer input.Close()
io.Copy(os.Stdout, input)
input, err := os.Open("C:\GoWork\toy\lang.xml")