我在嘗試讀取文件時在調試器中獲取了。我不確定這是路徑問題還是讀者指針在哪里。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 關注
- 145 瀏覽
添加回答
舉報
0/150
提交
取消