2015-06-19 8 views
5

Ich habe ein Problem mit dem Lesen einer YAML-Datei. Ich denke, es ist etwas in der Dateistruktur, aber ich kann nicht herausfinden, was.Lesen einer YAML-Datei in Golang

YAML-Datei:

conf: 
    hits:5 
    time:5000000 

Code:

type conf struct { 
    hits int64 `yaml:"hits"` 
    time int64 `yaml:"time"` 
} 


func (c *conf) getConf() *conf { 

    yamlFile, err := ioutil.ReadFile("conf.yaml") 
    if err != nil { 
     log.Printf("yamlFile.Get err #%v ", err) 
    } 
    err = yaml.Unmarshal(yamlFile, c) 
    if err != nil { 
     log.Fatalf("Unmarshal: %v", err) 
    } 

    return c 
} 
+1

Was ist der Fehler, den Sie sehen? –

+0

@AmitKumarGupta ich bekomme keinen Fehler, nur leere Struktur – MIkCode

+0

Denken Sie, dass das relevant sein könnte, um zu Ihrer Frage hinzuzufügen? Können Sie den vollständigen Code einfügen, der das Problem reproduziert? 'package main', welche Dateien Sie importieren, eine 'main'-Funktion usw., so dass es für Leute einfach ist, Ihnen zu helfen, den Code zu kopieren und lokal auszuführen. Denken Sie darüber nach, Informationen und Code hinzuzufügen, die es den Benutzern erleichtern, Ihnen zu helfen, weil Sie möchten, dass Ihnen die Leute helfen. –

Antwort

14

Ihre yaml Datei

hits: 5 
time: 5000000 

Ihr Code sollte wie folgt aussehen müssen:

package main 

import (
    "fmt" 
    "gopkg.in/yaml.v2" 
    "io/ioutil" 
    "log" 
) 

type conf struct { 
    Hits int64 `yaml:"hits"` 
    Time int64 `yaml:"time"` 
} 

func (c *conf) getConf() *conf { 

    yamlFile, err := ioutil.ReadFile("conf.yaml") 
    if err != nil { 
     log.Printf("yamlFile.Get err #%v ", err) 
    } 
    err = yaml.Unmarshal(yamlFile, c) 
    if err != nil { 
     log.Fatalf("Unmarshal: %v", err) 
    } 

    return c 
} 

func main() { 
    var c conf 
    c.getConf() 

    fmt.Println(c) 
} 

der Hauptfehler war Großbuchstabe für Ihre Struktur.

+1

Die Spezifikation für exportierte Bezeichner: http://golang.org/doc/go_spec.html#Exported_identifiers – elithrar