2016-11-07 133 views
-1

我在Go中做了一个小代码,我认为它足够读取XML文件。在Go中读取一个XML文件

有人可以知道什么是happing吗?

XML文件:

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

</Lang> 

Go代码:

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) 
} 

Error message:

.\xmltoStruct.go:11: unknown escape sequence: G 
.\xmltoStruct.go:11: unknown escape sequence: l 

回答

2

字符串字面双引号之间是解释字符串文字,其中的反斜杠是一个特殊的表示esca的字符pe序列。见Spec: String literals

引号之间的文本形成文字的值,以解释他们在rune literals反斜杠(除了\”是非法的,\”是合法的),有相同的限制

无论是双引号的反斜线:

input, err := os.Open("C:\\GoWork\\toy\\lang.xml") 

或者更简单:使用原料字符串字面量(反引号),其中反斜线不具有SP ecial含义:

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) 
0

目前这两种文字形式

混合
input, err := os.Open("C:\GoWork\toy\lang.xml") 

基本上有两种形式字符串文字: a。原始字符串文字 b。解释字符串文字

既可以使用原始字符串字面量反引号,如`foo`和文字值有引号之间没有任何特殊含义

或解释字符串文字加上双引号,如“栏”但要小心,因为数值解释如下:rune literals