我在Go中做了一个小代码,我认为读取XML文件已经足够了。
有人知道什么是happing?
XML文件:
<Lang>
<Name> Go </Name>
<Year> 2009 </Year>
<URL> http://golang.org/ </URL>
</Lang>
转到代码:
package main
import (
"io"
"log"
"os"
)
func main() {
input, err := os.Open("C:\GoWork\toy\lang.xml")
if err != nil {
log.Fatal(err)
}
io.Copy(os.Stdout, input)
}
.\xmltoStruct.go:11: unknown escape sequence: G
.\xmltoStruct.go:11: unknown escape sequence: l
答案 0 :(得分:2)
双引号之间的字符串文字是解释的字符串文字,其中反斜杠是表示转义序列的特殊字符。见Spec: String literals:
引号之间的文本形成了文字的值,反斜杠转义符被解释为rune literals(除非“非法和\”是合法的),具有相同的限制。
双引号你的反斜杠:
input, err := os.Open("C:\\GoWork\\toy\\lang.xml")
或者更简单:使用 raw 字符串文字(反引号),其中反斜杠没有特殊含义:
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)
答案 1 :(得分:0)
目前,这是两种文字形式的混合
input, err := os.Open("C:\GoWork\toy\lang.xml")
基本上有两种形式的字符串文字: 一个。原始字符串文字 湾解释的字符串文字
使用带有后引号的原始字符串文字,如`foo`,而literal的值在引号之间没有特殊含义
或用双引号解释字符串文字,如&#34; bar&#34;但要采取预防措施,因为该值被解释为rune literals