去OS文件读取来自docs not working的样本 - 声明

时间:2017-02-19 08:15:29

标签: go

我在这里阅读GO OS文档https://golang.org/pkg/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)
}

1 个答案:

答案 0 :(得分:0)

您收到的错误会告诉您究竟出了什么问题。您的代码在函数体之外。只有声明可以在函数体之外。您需要将代码移动到main()或其他主要调用的函数中。