在Go

时间:2016-11-07 01:52:35

标签: windows file go

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

Error message:

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

2 个答案:

答案 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