Go 尝试读取文件时,ReadFile返回nil
尝试读取文件Go 尝试读取文件时,ReadFile返回nil,go,Go,尝试读取文件test.json时,我在调试器中获得nil的sampleFlags。我不确定这是一个路径问题还是读卡器指针在哪里。FetchFlags是如何触发的,这是由服务器中的处理程序触发的。go最终调用FetchFlags 快走 包标志 进口( “编码/json” “fmt” “io/ioutil” ) 类型标志结构{ 名称字符串`json:“名称”` 类别字符串`json:“类别”` 标签字符串`json:“标签”` } func FetchFlags()[]标志{ sampleFlags
test.json
时,我在调试器中获得nil
的sampleFlags
。我不确定这是一个路径问题还是读卡器指针在哪里。FetchFlags是如何触发的,这是由服务器中的处理程序触发的。go
最终调用FetchFlags
快走
包标志
进口(
“编码/json”
“fmt”
“io/ioutil”
)
类型标志结构{
名称字符串`json:“名称”`
类别字符串`json:“类别”`
标签字符串`json:“标签”`
}
func FetchFlags()[]标志{
sampleFlags,Util:=ioutil.ReadFile(“test.json”)
Printf(“文件内容:%s”,sampleFlags)
var标志[]标志
_=json.Unmarshal(sampleFlags和Flags)
返回标志
}
结构:
/server
server.go
/package
/flags
flags.go
test.json
/pack_a
/pack_b
您正在尝试打开相对于包路径的文件。这是一种糟糕的设计方法。例如,根据编译方法,Go可以将二进制文件放在$GOROOT/bin
目录中。而且不会有test.json
文件
为您的文件使用绝对路径或使用来自的方法。路径应与主.go(或等效)文件相关,而不是与包相关。
(绝对路径也应该有效,但我不是100%确定)
如果您仔细想想,就会发现,package/flags
是直接或间接导入主文件的。
您的代码编译/执行不会跳转到包/标志
,而是将代码导入主文件
我建议您使用结果路径或相对于主文件的路径。ioutil.ReadFile()
将错误作为第二个返回值返回。检查返回的错误。它应该对你有帮助。永远不要忽视错误。