2017-02-19 57 views
-1

我读了GO OS文档这里https://golang.org/pkg/os/转到OS文件读取文档样本不工作 - 声明

的文档给这个代码

file, err := os.Open("file.go") // For read access. 
if err != nil { 
    log.Fatal(err) 
} 

,然后这个

data := make([]byte, 100) 
count, err := file.Read(data) 
if err != nil { 
    log.Fatal(err) 
} 

然而当我在这个例子中使用它时,我得到了非函数体外的声明。

在这个例子中应该如何使用文档代码?

package main 

import (
    "encoding/xml" 
    "fmt" 
    "log" 
    "os" 
) 

type doc struct { 
    Meeting meeting `xml:"meeting"` 
} 

type meeting struct { 
    Race race `xml:"race"` 
} 

type race struct { 
    ID  int   `xml:"id,attr"` 
    Name  string  `xml:"name,attr"` 
    Distance int   `xml:"distance,attr"` 
    Noms  []nomination `xml:"nomination"` 
} 

type nomination struct { 
    Number int `xml:"number,attr"` 
    ID  int `xml:"id,attr"` 
    Horse string `xml:"horse,attr"` 
    Weight int `xml:"weight,attr"` 
    Rating int `xml:"rating,attr"` 
} 

func main() { 
    d := doc{} 
    err := xml.Unmarshal(file, &d) 
    if err != nil { 
     log.Fatalf("Unable to unmarshal XML: %s\n", err) 
    } 
    fmt.Printf("%#v\n", d) 
} 

file, err := os.Open("file.go") // For read access. 
if err != nil { 
    log.Fatal(err) 
} 
data := make([]byte, 100) 
count, err := file.Read(data) 
if err != nil { 
    log.Fatal(err) 
} 

回答

0

您收到的错误告诉您确切的错误。您的代码位于函数体外部。只有声明可以在函数体之外。您需要将代码移到main()或另一个主要调用的函数中。

+0

所以我应该把它放在主或创建一个基于文档代码的文件阅读功能? – sayth