2017-02-19 55 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