2016-11-07 128 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