我在尝试读取文件时在调试器中获取了。我不确定这是路径问题还是读者指针在哪里。FetchFlags是如何触发的是由最终调用.nilsampleFlagstest.jsonhandlerserver.goFetchFlagsflags.gopackage flagsimport ( "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
2 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
该路径应与您的 main.go(或等效)文件相关,而不是与您的软件包相关。(绝对路径也应该有效,但我不是100%确定)
如果您考虑一下,那么您将意识到它直接或间接地导入到您的主文件中。您的代码编译/执行不会跳转到 ,而是将该代码导入到主文件中。package/flags
package/flags
我建议您使用abosulte路径或相对于主文件的路径。
繁花如伊
TA贡献2012条经验 获得超12个赞
您正在尝试打开相对于包路径的文件。这是一种糟糕的设计方法。例如,根据编译方法,Go可能会将二进制文件放在目录中。并且不会有文件。$GOROOT/bin
test.json
为您的文件使用绝对路径,或使用如何打开相对于我的GOPATH的文件?中的方法。
- 2 回答
- 0 关注
- 106 浏览
添加回答
举报
0/150
提交
取消