读取文件在尝试读取文件时返回 nil

我在尝试读取文件时在调试器中获取了。我不确定这是路径问题还是读者指针在哪里。FetchFlags是如何触发的是由最终调用.nilsampleFlagstest.jsonhandlerserver.goFetchFlags


flags.go


package flags


import (

    "encoding/json"

    "fmt"

    "io/ioutil"

)


type Flag struct {

    Name     string `json:"name"`

    Category string `json:"category"`

    Label    string `json:"label"`

}


func FetchFlags() []Flag {

    sampleFlags, _ := ioutil.ReadFile("test.json")

    fmt.Printf("File contents: %s", sampleFlags)

    var Flags []Flag

    _ = json.Unmarshal(sampleFlags, &Flags)

    return Flags

}

结构:


/server

  server.go

/package

  /flags

    flags.go

    test.json

  /pack_a

  /pack_b


潇潇雨雨
浏览 107回答 2
2回答

侃侃尔雅

该路径应与您的 main.go(或等效)文件相关,而不是与您的软件包相关。(绝对路径也应该有效,但我不是100%确定)如果您考虑一下,那么您将意识到它直接或间接地导入到您的主文件中。您的代码编译/执行不会跳转到 ,而是将该代码导入到主文件中。package/flagspackage/flags我建议您使用abosulte路径或相对于主文件的路径。

繁花如伊

您正在尝试打开相对于包路径的文件。这是一种糟糕的设计方法。例如,根据编译方法,Go可能会将二进制文件放在目录中。并且不会有文件。$GOROOT/bintest.json为您的文件使用绝对路径,或使用如何打开相对于我的GOPATH的文件?中的方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go