Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 尝试读取文件时,ReadFile返回nil_Go - Fatal编程技术网

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()
将错误作为第二个返回值返回。检查返回的错误。它应该对你有帮助。永远不要忽视错误。