2016-11-07 27 views
-1

Goで小さなコードを実行しましたが、XMLファイルを読むのに十分だと思いました。GoでXMLファイルを読む

誰かがハッピングしていることを知ることができますか?

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

Error message:

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

答えて

2

二重引用符の間の文字列リテラルはは、バックスラッシュが特別であるリテラル文字列を解釈していますエスカを表す文字p1配列を含む。 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

は現在、この2つのリテラルのフォーム

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

のミックスである二つの形式は基本的にあります。文字列リテラルの: a。生の文字列リテラル b。解釈され、文字列リテラル

いずれかfoo` `のようにバック引用符でリテラル生の文字列を、使用してリテラルの値は引用符の間には特別な意味を持ちません

「バー」のように二重引用符で

や解釈文字列リテラル、値は次のように解釈されるため、注意してください。rune literals